Function: derive()
derive<
M,K>(model,keys?):Pick<M,K>
Defined in: packages/model/src/derive.ts:35
Derives extensions from a given model.
Extensions are properties and methods you define as the second argument in model creation function.
Type Parameters
M
M extends Model<any> | SafeModel<any>
Type of the model
K
K extends string | number | symbol = Exclude<keyof M, BaseProp>
Type of the extension keys to pick from the model
Parameters
model
M
The source model to derive properties from
keys?
K[]
Optional array of specific extension keys to pick. If not provided, picks all extensions
Returns
Pick<M, K>
An object containing only the selected extensions from the model
Example
typescript
const Person = createModel(z.object({ name: z.string() }), {
greet: (p: { name: string }) => `Hello, ${p.name}!`,
});
const Employee = createModel(Person.schema.extend({
id: z.string(),
}), {
...derive(Person),
getBadge: (emp: { id: string }) => `EMP-${emp.id}`,
});
const emp = Employee.from({ name: 'John', id: '123' });
Employee.greet(emp); // "Hello, John!"
Employee.getBadge(emp); // "EMP-123"