nullableAsync
Создает схему, допускающую null.
const Schema = v.nullableAsync<TWrapped, TDefault>(wrapped, default_);
Дженерики
TWrappedextends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>TDefaultextends DefaultAsync<TWrapped, null>
Параметры
wrappedTWrappeddefault_TDefault
Объяснение
С помощью nullableAsync валидация вашей схемы будет пропускать входные значения null, и если вы укажете входное значение default_, схема будет использовать его, если входным значением является null. По этой причине тип выходных данных может отличаться от типа входных данных схемы.
Обратите внимание, что
nullableAsyncне принимаетundefinedв качестве входных данных. Если вы хотите принимать входные данныеundefined, используйтеoptionalAsync, а если хотите принимать входные данныеnullиundefined, используйте вместо этогоnullishAsync. Кроме того, если вы хотите установить выходное значение по умолчанию для любого невалидного ввода, вам следует использоватьfallbackAsync.
Возвращаемое значение
SchemaNullableSchemaAsync<TWrapped, TDefault>
Примеры
Следующие примеры показывают, как можно использовать nullableAsync.
Схема имени пользователя, допускающая null
Схема, которая принимает уникальное имя пользователя или null.
При использовании функции в качестве параметра
default_схема будет возвращать уникальное имя пользователя из вызова функции каждый раз, когда на вход поступаетnull.
import { getUniqueUsername, isUsernameUnique } from '~/api';
const NullableUsernameSchema = v.nullableAsync(
v.pipeAsync(
v.string(),
v.nonEmpty(),
v.checkAsync(isUsernameUnique, 'The username is not unique.')
),
getUniqueUsername
);
Развертывание схемы, допускающей null
Используйте unwrap, чтобы отменить действие nullableAsync.
import { isUsernameUnique } from '~/api';
const UsernameSchema = v.unwrap(
// Assume this schema is from a different file and is reused here
v.nullableAsync(
v.pipeAsync(
v.string(),
v.nonEmpty(),
v.checkAsync(isUsernameUnique, 'The username is not unique.')
)
)
);
Связанное
Следующие API можно комбинировать с nullableAsync.
Схемы
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, record, set, strictObject, strictTuple, string, symbol, tuple, tupleWithRest, undefined, undefinedable, union, unknown, variant, void
Методы
config, getDefault, getFallback, unwrap
Действия
brand, check, description, flavor, guard, metadata, partialCheck, rawCheck, rawTransform, readonly, title, transform
Утилиты
entriesFromList, isOfKind, isOfType
Асинхронные
arrayAsync, awaitAsync, checkAsync, customAsync, exactOptionalAsync, fallbackAsync, getDefaultsAsync, getFallbacksAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, parseAsync, parserAsync, partialCheckAsync, pipeAsync, rawCheckAsync, rawTransformAsync, recordAsync, safeParseAsync, safeParserAsync, setAsync, strictObjectAsync, strictTupleAsync, transformAsync, tupleAsync, tupleWithRestAsync, undefinedableAsync, unionAsync, variantAsync
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/nullableAsync/