flavor
Создаёт действие преобразования flavor.
const Action = v.flavor<TInput, TName>(name);
Обобщения
TInputextends anyTNameextends FlavorName
Параметры
nameTName
Пояснение
flavor — менее строгая версия brand, которая позволяет добавить flavor к выходному типу схемы с помощью name. Данные считаются допустимыми, если их тип не имеет flavor или они были проверены схемой с таким же flavor.
flavorтакже можно использовать как хак для TypeScript DX, чтобы улучшить автодополнение в редакторе, показывая только литеральные типы, но при этом разрешая передавать корневой тип без flavor.
Возвращает
ActionFlavorAction<TInput, TName>
Примеры
В следующих примерах показано, как можно использовать flavor.
Схемы ID с flavor
Схема, гарантирующая, что разные типы ID не будут перепутаны.
// Create user ID and order ID schema
const UserIdSchema = v.pipe(v.string(), v.flavor('UserId'));
const OrderIdSchema = v.pipe(v.string(), v.flavor('OrderId'));
// Infer output types of both schemas
type UserId = v.InferOutput<typeof UserIdSchema>;
type OrderId = v.InferOutput<typeof OrderIdSchema>;
// This works because output is flavored
const userId: UserId = v.parse(UserIdSchema, 'c28443ef...');
const orderId: OrderId = v.parse(OrderIdSchema, '4b717520...');
// You can also use unflavored strings
const newUserId1: UserId = '2d80cd94...';
// But this will result in a type error
const newUserId2: UserId = orderId;
Связанные API
Следующие API можно комбинировать с flavor.
Схемы
any, array, bigint, blob, boolean, custom, date, enum, exactOptional, file, function, instance, intersect, lazy, literal, looseObject, looseTuple, map, nan, never, nonNullable, nonNullish, nonOptional, null, nullable, nullish, number, object, objectWithRest, optional, picklist, promise, record, set, strictObject, strictTuple, string, symbol, tuple, tupleWithRest, undefined, undefinedable, union, unknown, variant, void
Методы
Утилиты
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/flavor/