fallback
A value used instead of an error. Handy for query parameters and settings: ?page=abc gives page: 1 instead of a 422 response.
Signature
ts
function fallback<T>(schema: Schema<T>, value: T | ((input: unknown) => T)): Schema<T>Parameters
| Parameter | Type | Description |
|---|---|---|
schema | Schema<T> | The value schema |
value | T | (input) => T | The value on error, or a function that receives the raw input and returns a replacement |
Notes
- Works for any schema error, including an empty value — so a separate
optionalis not needed. - Errors of async checks (
checkAsync) are not hidden: by the time they resolve, the value is already chosen. - Don't use it for data where errors matter (forms, creating records) — the user won't know they entered something wrong.
Example
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' }