fallback
Значение, которое подставляется вместо ошибки. Удобно для query-параметров и настроек: ?page=abc даёт page: 1, а не ответ 422.
Сигнатура
ts
function fallback<T>(schema: Schema<T>, value: T | ((input: unknown) => T)): Schema<T>Параметры
| Параметр | Тип | Описание |
|---|---|---|
schema | Schema<T> | Схема значения |
value | T | (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' }