4.5.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 MyCustom 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 an InferTypeOf utility imported from @medusajs/framework/types that transforms your data model to a type.

For example:

Code
1import { InferTypeOf } from "@medusajs/framework/types"2import { MyCustom } from "../models/my-custom" // relative path to the model3
4export type MyCustom = InferTypeOf<typeof MyCustom>

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

Since the MyCustom 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 MyCustom type to reference a data model in other types, such as in workflow inputs or service method outputs:

Example Service
1// other imports...2import { InferTypeOf } from "@medusajs/framework/types"3import { MyCustom } from "../models/my-custom"4
5type MyCustom = InferTypeOf<typeof MyCustom>6
7class HelloModuleService extends MedusaService({ MyCustom }) {8  async doSomething(): Promise<MyCustom> {9    // ...10  }11}
Was this chapter helpful?
Edit this page