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"