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>值的 Schema
valueT | (input) => T出错时的值,或接收原始输入并返回替代值的函数

注意事项 ​

  • 对 Schema 的任何错误生效,包括空值 —— 因此不需要另外使用 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' }

另请参阅 ​