partial
Новая схема объекта, в которой все поля (или перечисленные) необязательные. Типичный случай — PATCH: при обновлении можно передать только изменившиеся поля.
Сигнатура
ts
function partial<S, K extends keyof S = keyof S>(schema: ObjectSchema<S>, keys?: K[]): ObjectSchema<...>Параметры
| Параметр | Тип | Описание |
|---|---|---|
schema | ObjectSchema | Схема, созданная object |
keys | string[] | Какие поля сделать необязательными. По умолчанию — все |
Особенности
- Исходная схема не меняется — возвращается новая.
- Если поле передано, его правила проверяются как обычно.
- Значения по умолчанию из
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']);