4.6.1. Infer Type of Data Model

In this chapter, you'll learn how to infer the type of a data model.

How to Infer Type of Data Model?#

Consider you have a Post data model. You can't reference this data model in a type, such as a workflow input or service method output types, since it's a variable.

Instead, Medusa provides InferTypeOf that transforms your data model to a type.

For example:

Code
import { InferTypeOf } from "@medusajs/framework/types"
import { Post } from "../modules/blog/models/post" // relative path to the model

export type Post = InferTypeOf<typeof Post>

InferTypeOf accepts as a type argument the type of the data model.

Since the Post data model is a variable, use the typeof operator to pass the data model as a type argument to InferTypeOf.

You can now use the Post type to reference a data model in other types, such as in workflow inputs or service method outputs:

Example Service
// other imports...
import { InferTypeOf } from "@medusajs/framework/types"
import { Post } from "../models/post"

type Post = InferTypeOf<typeof Post>

class BlogModuleService extends MedusaService({ Post }) {
  async doSomething(): Promise<Post> {
    // ...
  }
}
Was this chapter helpful?
Ask Bloom
For assistance in your development, use Claude Code Plugins or Docs MCP server in Cursor, VSCode, etc...FAQ
What is Medusa?
How can I create a module?
How can I create a data model?
How do I create a workflow?
How can I extend a data model in the Product Module?
Recipes
How do I build a marketplace with Medusa?
How do I build digital products with Medusa?
How do I build subscription-based purchases with Medusa?
What other recipes are available in the Medusa documentation?
Chat is cleared on refresh
Line break
⇧↵