Методы
Помимо parse и safeParse, Valibot предлагает и другие методы, упрощающие работу со схемами. Далее мы рассмотрим методы для схем, объектов и конвейеров.
Методы схем
Методы схем добавляют функциональность, упрощают работу с ними и помогают использовать схемы для проверки и извлечения данных.
Методы схем: assert, config, fallback, flatten, getDefault, getDefaults, getDescription, getFallback, getFallbacks, getMetadata, getTitle, is, message, parse, safeParse, summarize, pipe, unwrap
Подробнее о
pipeсм. в руководстве по конвейерам. Подробнее о методах проверки см. в руководстве по разбору данных. Подробнее оflattenсм. в руководстве по ошибкам.
Резервное значение
Если при проверке схемы возникает ошибка, вы можете перехватить её с помощью fallback, чтобы вместо неё вернуть заранее заданное значение.
import * as v from 'valibot';
const StringSchema = v.fallback(v.string(), 'hello');
const stringOutput = v.parse(StringSchema, 123); // 'hello'
Методы объектов
Методы объектов упрощают работу со схемами объектов. Они во многом аналогичны служебным типам TypeScript.
Методы объектов: keyof, omit, partial, pick, required
Сходства с TypeScript
Как и в TypeScript, с помощью partial можно сделать значения объекта необязательными, с помощью required — обязательными, а с помощью pick и omit — включить или исключить определённые значения из существующей схемы.
import * as v from 'valibot';
// TypeScript
type Object1 = Partial<{ key1: string; key2: number }>;
// Valibot
const object1 = v.partial(v.object({ key1: v.string(), key2: v.number() }));
// TypeScript
type Object2 = Pick<Object1, 'key1'>;
// Valibot
const object2 = v.pick(object1, ['key1']);
Методы конвейеров
Методы конвейеров изменяют результаты проверок и преобразований внутри конвейера.
Методы конвейеров: forward
Подробнее о работе конвейеров см. в руководстве по конвейерам.
Перенаправление
forward позволяет связать ошибку со вложенной схемой. Например, если необходимо проверить, совпадают ли оба введённых пароля в форме регистрации, этот метод позволяет перенаправить ошибку на поле для второго пароля. Так сообщение об ошибке отобразится в нужном месте.
import * as v from 'valibot';
const RegisterSchema = v.pipe(
v.object({
email: v.pipe(
v.string(),
v.nonEmpty('Please enter your email.'),
v.email('The email address is badly formatted.')
),
password1: v.pipe(
v.string(),
v.nonEmpty('Please enter your password.'),
v.minLength(8, 'Your password must have 8 characters or more.')
),
password2: v.string(),
}),
v.forward(
v.partialCheck(
[['password1'], ['password2']],
(input) => input.password1 === input.password2,
'The two passwords do not match.'
),
['password2']
)
);
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/guides/methods/