Skip to content

partial ​

创建一个新的对象 Schema,其中所有字段(或列出的字段)都变为选填。典型场景是 PATCH:更新时只需传入变化的字段。

签名 ​

ts
function partial<S, K extends keyof S = keyof S>(schema: ObjectSchema<S>, keys?: K[]): ObjectSchema<...>

参数 ​

参数类型说明
schemaObjectSchema由 object 创建的 Schema
keysstring[]要变为选填的字段。默认为全部

注意事项 ​

  • 原 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']);

另请参阅 ​