Spec-Zone.ru › Valibot

nullish

Создает nullish-схему.

const Schema = v.nullish<TWrapped, TDefault>(wrapped, default_);

Дженерики

  • TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>
  • TDefault extends Default<TWrapped, null | undefined>

Параметры

  • wrapped TWrapped
  • default_ TDefault

Объяснение

С помощью nullish валидация вашей схемы будет пропускать входные данные со значением undefined и null, и если вы укажете входное значение default_, схема будет использовать его, если входными данными являются undefined или null. По этой причине выходной тип схемы может отличаться от входного типа.

Важно: при использовании в схемах объектов, если ключ отсутствует и значение default_ не указано, пайплайн схемы (включая преобразования) не будет выполнен. Чтобы пайплайны выполнялись для отсутствующих ключей, укажите значение default_.

Обратите внимание, что nullish принимает undefined и null в качестве входных данных. Если вы хотите принимать только входные данные со значением null, используйте nullable, а если хотите принимать только undefined, используйте вместо этого optional. Кроме того, если вы хотите задать выходное значение по умолчанию для любых недопустимых входных данных, вам следует использовать fallback.

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

  • Schema NullishSchema<TWrapped, TDefault>

Примеры

Следующие примеры показывают, как можно использовать nullish.

Nullish-схема строки

Схема, принимающая string, undefined и null.

const NullishStringSchema = v.nullish(v.string(), "I'm the default!");

Nullish-схема даты

Схема, принимающая Date, undefined и null.

При использовании функции в качестве параметра default_ схема будет возвращать новый экземпляр Date каждый раз, когда входными данными являются undefined или null.

const NullishDateSchema = v.nullish(v.date(), () => new Date());

Nullish-схема поля объекта

Схема объекта с nullish-полем.

const NullishEntrySchema = v.object({
  key: v.nullish(v.string()),
});

По умолчанию undefined

По умолчанию, если во входном объекте отсутствует nullish-поле, соответствующий ключ опускается в выходных данных. Чтобы всегда включать этот ключ в выходные данные со значением undefined, передайте функцию, возвращающую undefined, в качестве параметра default_.

const NullishEntrySchema = v.object({
  key: v.nullish(v.string(), () => undefined),
});

Развертывание nullish-схемы

Используйте unwrap, чтобы отменить действие nullish.

const NullishNumberSchema = v.nullish(v.number());
const NumberSchema = v.unwrap(NullishNumberSchema);

Nullish с пайплайнами

При использовании nullish в pipe отсутствующие ключи объекта запускают пайплайн только в том случае, если предоставлено значение default_. Если ключ присутствует со значением null или undefined, последующие действия пайплайна по-прежнему выполняются.

const SchemaWithoutDefault = v.object({
  value: v.pipe(
    v.nullish(v.string()),
    v.transform((input) => (input ?? 'hello').toUpperCase()) // Does not run for missing keys
  ),
}); // Output type: { value?: string }

const SchemaWithDefault = v.object({
  value: v.pipe(
    v.nullish(v.string(), 'hello'), // Default value provided
    v.transform((input) => input.toUpperCase()) // Runs for missing keys, null, and undefined too
  ),
}); // Output type: { value: string }

Связанное

Следующие API могут быть объединены с nullish.

Схемы

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, number, object, objectWithRest, optional, picklist, promise, record, 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, unwrap

Действия

check, brand, description, flavor, guard, metadata, partialCheck, rawCheck, rawTransform, readonly, title, transform

Утилиты

entriesFromList, isOfKind, isOfType

© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/nullish/

Spec-Zone.ru

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