Ментальная модель
Концептуальная модель Valibot в основном состоит из схем, методов и действий. Поскольку каждая функциональность импортируется как отдельная функция, важно понять эту концепцию: она значительно упрощает работу с модульным API.
Справочник API дает обзор всех схем, методов и действий. На странице справочника для каждого из них также перечислены другие связанные схемы, методы и действия, чтобы их было проще найти.
Схемы
Схемы — отправная точка для работы с Valibot. Они позволяют проверять определенный тип данных, например строку, объект или дату. Каждая схема независима. Их можно повторно использовать или вкладывать друг в друга, чтобы описывать более сложные структуры данных.
import * as v from 'valibot';
const BookSchema = v.object({
title: v.string(),
numberOfPages: v.number(),
publication: v.date(),
tags: v.array(v.string()),
});
Каждая функция схемы возвращает доступный объект, содержащий все ее свойства. Однако в большинстве случаев вам не нужно обращаться к ним напрямую. Вместо этого используйте методы, которые помогают изменять схему или работать с ней.
Методы
Методы помогают изменять схему или работать с ней. Например, метод parse позволяет разбирать неизвестные данные на основе схемы. При использовании метода всегда передавайте схему первым аргументом.
import * as v from 'valibot';
const BookSchema = v.object({…});
function createBook(data: unknown) {
return v.parse(BookSchema, data);
}
Большинство методов используются со схемами. Однако есть и исключения, например
forwardиflatten, которые используются с действиями или проблемами.
Действия
Действия позволяют дополнительно проверять, преобразовывать или аннотировать определенный тип данных. Они используются только вместе с методом pipe, который расширяет функциональность схемы, добавляя дополнительные правила проверки, преобразования и метаданных. Например, следующую схему можно использовать, чтобы удалить пробелы в начале и конце строки и проверить, является ли она корректным адресом электронной почты.
import * as v from 'valibot';
const EmailSchema = v.pipe(v.string(), v.trim(), v.email());
Действия очень мощные. Практически нет ограничений на то, что с их помощью можно делать. Помимо проверок и преобразований, конвейеры могут содержать метаданные, заданные с помощью таких действий, как title, description, examples и metadata. Это может быть полезно для документации, инструментов ИИ и других интеграций. Действия также могут изменять тип выходных данных с помощью таких преобразований, как readonly и brand.
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/guides/mental-model/