Skip to content

preprocess ​

在校验之前预处理输入值。适用于数据格式不方便的情况。

签名 ​

ts
function preprocess<T>(fn: (value: unknown) => unknown, schema: Schema<T>): Schema<T>

参数 ​

参数类型说明
fn(value: unknown) => unknown预处理函数。接收任意类型的原始值
schemaSchema<T>校验 fn 结果的 Schema

注意事项 ​

  • fn 接收的是未经校验的数据:可能是任何值。
  • 所有 coerce 函数都基于 preprocess 实现。

示例 ​

带逗号的小数 ​

ts
const amount = preprocess(
  (v) => (typeof v === 'string' ? Number(v.replace(',', '.')) : v),
  number(),
);

validate(amount, '1,5').data; // 1.5

字符串中的 JSON ​

ts
const settings = preprocess(
  (v) => (typeof v === 'string' ? JSON.parse(v) : v),
  object({ theme: oneOf(['light', 'dark']) }),
);

另请参阅 ​