Skip to content

partial ​

Новая схема объекта, в которой все поля (или перечисленные) необязательные. Типичный случай — PATCH: при обновлении можно передать только изменившиеся поля.

Сигнатура ​

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

Параметры ​

ПараметрТипОписание
schemaObjectSchemaСхема, созданная object
keysstring[]Какие поля сделать необязательными. По умолчанию — все

Особенности ​

  • Исходная схема не меняется — возвращается новая.
  • Если поле передано, его правила проверяются как обычно.
  • Значения по умолчанию из 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']);

См. также ​