Spec-Zone.ru › Valibot

record

Создаёт схему record.

const Schema = v.record<TKey, TValue, TMessage>(key, value, message);

Дженерики

  • TKey extends BaseSchema<string, string | number | symbol, BaseIssue<unknown>>
  • TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>
  • TMessage extends ErrorMessage<RecordIssue> | undefined

Параметры

  • key TKey
  • value TValue
  • message TMessage

Пояснение

С помощью record вы можете проверить тип данных входного значения и соответствие записей key и value. Если входные данные не являются объектом, вы можете использовать message для настройки сообщения об ошибке.

Эта схема отфильтровывает определённые записи из record по соображениям безопасности.

Эта схема помечает запись как необязательную, если обнаруживает, что её ключ является литеральным типом. Причина этого заключается в том, что технически невозможно обнаружить отсутствующие литеральные ключи без ограничения схемы key типами string, enum и picklist. Однако если используются enum и picklist, лучше использовать object с entriesFromList, поскольку это уже покрывает необходимую функциональность. Это решение также уменьшает размер бандла record, поскольку требуется проверять только существующие записи входных данных, а не отсутствующие ключи.

Возвращаемое значение

  • Schema RecordSchema<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/

Spec-Zone.ru

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