partial
创建一个新的对象 Schema,其中所有字段(或列出的字段)都变为选填。典型场景是 PATCH:更新时只需传入变化的字段。
签名
ts
function partial<S, K extends keyof S = keyof S>(schema: ObjectSchema<S>, keys?: K[]): ObjectSchema<...>参数
| 参数 | 类型 | 说明 |
|---|---|---|
schema | ObjectSchema | 由 object 创建的 Schema |
keys | string[] | 要变为选填的字段。默认为全部 |
注意事项
- 原 Schema 不会被修改 —— 返回一个新的 Schema。
- 如果传入了字段,仍按原规则校验。
- 不会应用
optional的默认值:在PATCH中,缺失的字段不应被默认值覆盖。 - 保留对象选项(
unknown)。
示例
创建与更新
ts
const CreateUser = object({
name: pipe(string(), minLength(2)),
email: pipe(string(), email()),
password: pipe(string(), minLength(8)),
});
const UpdateUser = partial(CreateUser);
validate(UpdateUser, { name: 'Ivan' }).data; // { name: 'Ivan' }
validate(UpdateUser, { name: 'I' }).errors; // { name: 'Must be at least 2 characters long' }仅部分字段
ts
const EditProfile = partial(CreateUser, ['password']);