record
Создаёт схему record.
const Schema = v.record<TKey, TValue, TMessage>(key, value, message);
Дженерики
TKeyextends BaseSchema<string, string | number | symbol, BaseIssue<unknown>>TValueextends BaseSchema<unknown, unknown, BaseIssue<unknown>>TMessageextends ErrorMessage<RecordIssue> | undefined
Параметры
keyTKeyvalueTValuemessageTMessage
Пояснение
С помощью record вы можете проверить тип данных входного значения и соответствие записей key и value. Если входные данные не являются объектом, вы можете использовать message для настройки сообщения об ошибке.
Эта схема отфильтровывает определённые записи из record по соображениям безопасности.
Эта схема помечает запись как необязательную, если обнаруживает, что её ключ является литеральным типом. Причина этого заключается в том, что технически невозможно обнаружить отсутствующие литеральные ключи без ограничения схемы
keyтипамиstring,enumиpicklist. Однако если используютсяenumиpicklist, лучше использоватьobjectсentriesFromList, поскольку это уже покрывает необходимую функциональность. Это решение также уменьшает размер бандлаrecord, поскольку требуется проверять только существующие записи входных данных, а не отсутствующие ключи.
Возвращаемое значение
SchemaRecordSchema<TKey, TValue, TMessage>
Примеры
Следующие примеры показывают, как можно использовать record.
Схема строкового record
Схема для валидации record со строками.
const StringRecordSchema = v.record(
v.string(),
v.string(),
'An object is required.'
);
Схема record с объектами
Схема для валидации record из объектов.
const ObjectRecordSchema = v.record(v.string(), v.object({ key: v.string() }));
Picklist в качестве ключа
Схема для валидации record с определёнными необязательными ключами.
const ProductRecordSchema = v.record(
v.picklist(['product_a', 'product_b', 'product_c']),
v.optional(v.number())
);
Enum в качестве ключа
Схема для валидации record с определёнными необязательными ключами.
enum Products {
PRODUCT_A = 'product_a',
PRODUCT_B = 'product_b',
PRODUCT_C = 'product_c',
}
const ProductRecordSchema = v.record(v.enum(Products), v.optional(v.number()));
Связанные темы
Следующие API можно комбинировать с record.
Схемы
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, set, strictObject, strictTuple, string, symbol, tuple, tupleWithRest, undefined, undefinedable, union, unknown, variant, void
Методы
assert, config, fallback, getDefault, getDefaults, getFallback, getFallbacks, is, message, parse, parser, pipe, safeParse, safeParser
Действия
check, brand, description, entries, flavor, guard, maxEntries, minEntries, metadata, partialCheck, rawCheck, rawTransform, readonly, title, transform
Утилиты
entriesFromList, isOfKind, isOfType
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/record/