Spec-Zone.ru › Valibot

Массивы

Для проверки массивов с помощью схемы можно использовать array или tuple. Используйте tuple, если массив имеет определённую форму, и array, если он содержит произвольное количество однотипных элементов.

Схема массива

Первый аргумент, передаваемый в array, — это схема, которая используется для проверки элементов массива.

import * as v from 'valibot';

const ArraySchema = v.array(v.number()); // number[]

Проверка с помощью конвейера

Для проверки длины или содержимого массива можно использовать конвейер.

import * as v from 'valibot';

const ArraySchema = v.pipe(
  v.array(v.string()),
  v.minLength(1),
  v.maxLength(5),
  v.includes('foo'),
  v.excludes('bar')
);

Схема кортежа

tuple — это массив определённой формы. Первый аргумент, передаваемый функции, — это кортеж схем, определяющий его форму.

import * as v from 'valibot';

const TupleSchema = v.tuple([v.string(), v.number()]); // [string, number]

Нестрогие и строгие кортежи

Схема tuple удаляет неизвестные элементы. Это означает, что элементы, не определённые в первом аргументе, не проверяются и не добавляются в выходные данные. Это поведение можно изменить, используя вместо неё схему looseTuple или strictTuple.

Схема looseTuple разрешает неизвестные элементы и добавляет их в выходные данные. Схема strictTuple запрещает неизвестные элементы и возвращает ошибку для первого найденного неизвестного элемента.

Кортеж с заданной схемой для остальных элементов

В качестве альтернативы можно использовать схему tupleWithRest, чтобы задать отдельную схему для неизвестных элементов. Все элементы, не определённые в первом аргументе, будут проверяться по схеме из второго аргумента.

import * as v from 'valibot';

const TupleSchema = v.tupleWithRest([v.string(), v.number()], v.null());

Проверка с помощью конвейера

Как и для массивов, для проверки длины и содержимого кортежа можно использовать конвейер.

import * as v from 'valibot';

const TupleSchema = v.pipe(
  v.tupleWithRest([v.string()], v.string()),
  v.maxLength(5),
  v.includes('foo'),
  v.excludes('bar')
);

© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/guides/arrays/

Spec-Zone.ru

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