undefinedable
Создает схему, допускающую undefined.
const Schema = v.undefinedable<TWrapped, TDefault>(wrapped, default_);
Дженерики
TWrappedextends BaseSchema<unknown, unknown, BaseIssue<unknown>>TDefaultextends Default<TWrapped, undefined>
Параметры
wrappedTWrappeddefault_TDefault
Объяснение
С undefinedable валидация вашей схемы будет пропускать входные значения undefined, и если вы укажете входное значение default_, схема будет использовать его, если входное значение равно undefined. По этой причине тип выходных данных может отличаться от типа входных данных схемы.
Во время выполнения
undefinedableведет себя точно так же, какoptional. Единственное отличие заключается в типе входных и выходных данных при использовании для записей объекта. В то время какoptionalдобавляет вопросительный знак к ключу,undefinedableэтого не делает.Обратите внимание, что
undefinedableне принимаетnullв качестве входных данных. Если вы хотите принимать входные данныеnull, используйтеnullable, а если вы хотите принимать входные данныеnullиundefined, используйте вместо этогоnullish. Кроме того, если вы хотите установить выходное значение по умолчанию для любого недопустимого входного значения, вам следует использоватьfallback.
Возвращаемое значение
SchemaUndefinedableSchema<TWrapped, TDefault>
Примеры
Следующие примеры показывают, как можно использовать undefinedable.
Строковая схема, допускающая undefined
Схема, которая принимает string и undefined.
const UndefinedableStringSchema = v.undefinedable(
v.string(),
"I'm the default!"
);
Схема даты, допускающая undefined
Схема, которая принимает Date и undefined.
При использовании функции в качестве параметра
default_схема будет возвращать новый экземплярDateкаждый раз, когда входное значение равноundefined.
const UndefinedableDateSchema = v.undefinedable(v.date(), () => new Date());
Схема записи, допускающей undefined
Схема объекта с записью, допускающей undefined.
const UndefinedableEntrySchema = v.object({
key: v.undefinedable(v.string()),
});
Развертывание схемы, допускающей undefined
Используйте unwrap, чтобы отменить действие undefinedable.
const UndefinedableNumberSchema = v.undefinedable(v.number());
const NumberSchema = v.unwrap(UndefinedableNumberSchema);
Связанное
Следующие API можно комбинировать с undefinedable.
Схемы
any, array, bigint, blob, boolean, custom, date, enum, exactOptional, file, function, instance, intersect, lazy, literal, looseObject, looseTuple, map, nan, never, nonNullable, nonNullish, null, nullable, nullish, number, object, objectWithRest, 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/undefinedable/