Spec-Zone.ru › Valibot

customAsync

Создаёт пользовательскую схему.

Эта функция схемы позволяет определить схему, которая проверяет значение с помощью пользовательской функции. Используйте её, когда нужно определить схему, которую нельзя выразить с помощью других функций схем.

const Schema = v.customAsync<TInput, TMessage>(check, message);

Обобщения

  • TInput extends any
  • TMessage extends ErrorMessage<CustomIssue> | undefined = ErrorMessage<CustomIssue> | undefined

Параметры

  • check (input: unknown) => MaybePromise<boolean>
  • message TMessage

Пояснение

С помощью customAsync можно проверить тип данных входного значения. Если входное значение не соответствует проверке check, можно использовать message, чтобы настроить сообщение об ошибке.

Убедитесь, что проверка в check соответствует типу данных TInput.

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

  • Schema CustomSchemaAsync<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/

Spec-Zone.ru

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