nullish
Создает nullish-схему.
const Schema = v.nullish<TWrapped, TDefault>(wrapped, default_);
Дженерики
TWrappedextends BaseSchema<unknown, unknown, BaseIssue<unknown>>TDefaultextends Default<TWrapped, null | undefined>
Параметры
wrappedTWrappeddefault_TDefault
Объяснение
С помощью nullish валидация вашей схемы будет пропускать входные данные со значением undefined и null, и если вы укажете входное значение default_, схема будет использовать его, если входными данными являются undefined или null. По этой причине выходной тип схемы может отличаться от входного типа.
Важно: при использовании в схемах объектов, если ключ отсутствует и значение
default_не указано, пайплайн схемы (включая преобразования) не будет выполнен. Чтобы пайплайны выполнялись для отсутствующих ключей, укажите значениеdefault_.Обратите внимание, что
nullishпринимаетundefinedиnullв качестве входных данных. Если вы хотите принимать только входные данные со значениемnull, используйтеnullable, а если хотите принимать толькоundefined, используйте вместо этогоoptional. Кроме того, если вы хотите задать выходное значение по умолчанию для любых недопустимых входных данных, вам следует использоватьfallback.
Возвращаемое значение
SchemaNullishSchema<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/