Spec-Zone.ru › Valibot

Методы

Помимо 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API