Skip to content

fallback ​

Значение, которое подставляется вместо ошибки. Удобно для query-параметров и настроек: ?page=abc даёт page: 1, а не ответ 422.

Сигнатура ​

ts
function fallback<T>(schema: Schema<T>, value: T | ((input: unknown) => T)): Schema<T>

Параметры ​

ПараметрТипОписание
schemaSchema<T>Схема значения
valueT | (input) => TЗначение при ошибке или функция, которая получает исходное значение и возвращает замену

Особенности ​

  • Срабатывает на любую ошибку схемы, включая пустое значение — поэтому отдельный optional не нужен.
  • Ошибки асинхронных проверок (checkAsync) не скрываются: к моменту их результата значение уже выбрано.
  • Не используйте для данных, где ошибка важна (формы, создание записей) — пользователь не узнает, что ввёл что-то не так.

Пример ​

ts
// GET /products?page=abc&limit=1000&sort=price
const Query = object({
  page: fallback(pipe(coerce.number(), integer(), min(1)), 1),
  limit: fallback(pipe(coerce.number(), integer(), min(1), max(100)), 20),
  sort: fallback(oneOf(['date', 'price', 'name']), 'date'),
});

parse(Query, req.query); // { page: 1, limit: 20, sort: 'price' }

См. также ​

  • optional — значение по умолчанию только для пустого значения
  • coerce