customAsync
Создаёт пользовательскую схему.
Эта функция схемы позволяет определить схему, которая проверяет значение с помощью пользовательской функции. Используйте её, когда нужно определить схему, которую нельзя выразить с помощью других функций схем.
const Schema = v.customAsync<TInput, TMessage>(check, message);
Обобщения
TInputextends anyTMessageextends ErrorMessage<CustomIssue> | undefined = ErrorMessage<CustomIssue> | undefined
Параметры
check(input: unknown) => MaybePromise<boolean>messageTMessage
Пояснение
С помощью customAsync можно проверить тип данных входного значения. Если входное значение не соответствует проверке check, можно использовать message, чтобы настроить сообщение об ошибке.
Убедитесь, что проверка в
checkсоответствует типу данныхTInput.
Возвращаемое значение
SchemaCustomSchemaAsync<TInput, TMessage>
Примеры
В следующих примерах показано, как можно использовать customAsync.
Схема свободного места
Схема для проверки свободного места.
import { isSeatVacant } from '~/api';
type Group = 'A' | 'B' | 'C' | 'D' | 'E';
type DigitLessThanSix = '0' | '1' | '2' | '3' | '4' | '5';
type Digit = DigitLessThanSix | '6' | '7' | '8' | '9';
type Seat = `${Group}${DigitLessThanSix}${Digit}`;
function isSeat(possibleSeat: string): possibleSeat is Seat {
return /^[A-E][0-5]\d$/.test(possibleSeat);
}
const VacantSeatSchema = v.customAsync<Seat>(
(input) => typeof input === 'string' && isSeat(input) && isSeatVacant(input),
'The input is not a valid vacant seat.'
);
Связанные материалы
Следующие API можно сочетать с customAsync.
Схемы
array, exactOptional, intersect, lazy, looseObject, looseTuple, map, nonNullable, nonNullish, nonOptional, nullable, nullish, object, objectWithRest, optional, record, set, strictObject, strictTuple, tuple, tupleWithRest, undefinedable, union
Методы
config, getDefault, getFallback
Действия
args, base64, brand, bytes, check, checkItems, codePoints, creditCard, cuid2, decimal, description, digits, domain, email, emoji, empty, endsWith, entries, everyItem, excludes, filterItems, findItem, finite, flavor, graphemes, gtValue, guard, hash, hexadecimal, hexColor, imei, includes, integer, ip, ipv4, ipv6, isbn, isrc, isoDate, isoDateTime, isoDateTimeSecond, isoTime, isoTimeSecond, isoTimestamp, isoWeek, ksuid, length, ltValue, mac, mac48, mac64, mapItems, maxBytes, maxCodePoints, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, metadata, mimeType, minBytes, minCodePoints, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nanoid, nonEmpty, notBytes, notCodePoints, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, octal, parseJson, partialCheck, rawCheck, rawTransform, readonly, reduceItems, regex, returns, rfcEmail, safeInteger, size, slug, someItem, sortItems, startsWith, stringifyJson, title, toCamelCase, toKebabCase, toLowerCase, toMaxValue, toMinValue, toPascalCase, toSnakeCase, toUpperCase, transform, trim, trimEnd, trimStart, ulid, url, uuid, value, values, words
Утилиты
entriesFromList, isOfKind, isOfType
Асинхронные
arrayAsync, awaitAsync, checkAsync, exactOptionalAsync, fallbackAsync, getDefaultsAsync, getFallbacksAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullableAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, parseAsync, parserAsync, partialCheckAsync, pipeAsync, rawCheckAsync, rawTransformAsync, recordAsync, safeParseAsync, safeParserAsync, setAsync, strictObjectAsync, strictTupleAsync, transformAsync, tupleAsync, tupleWithRestAsync, unionAsync
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/customAsync/