Массивы
Для проверки массивов с помощью схемы можно использовать 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/