Skip to content

coerce ​

对以字符串形式传入的数据进行类型转换:query 参数、FormData、环境变量、CSV。

签名 ​

ts
coerce.string(msg?: Message): Schema<string>
coerce.number(msg?: Message): Schema<number>
coerce.boolean(msg?: Message): Schema<boolean>
coerce.date(msg?: Message): Schema<Date>

参数 ​

参数类型说明
msgMessage自定义信息。替换该 Schema 所有错误的默认信息

转换规则 ​

函数转换随后按以下方式校验
coerce.string()数字、boolean、bigint → String(value)string()
coerce.number()字符串 → 去除空格 → Number(value)。空字符串保持为空number()
coerce.boolean()'true'、'1'、'on'、'yes'、1 → true;'false'、'0'、'off'、'no'、0 → false。不区分大小写boolean()
coerce.date()非空字符串或数字 → new Date(value)date()

已经是正确类型的值不会被修改。不合适的值会产生普通的类型错误:coerce.number() 处理 'abc' → Must be a number。

错误代码 ​

与对应的 Schema 相同:required 以及 string / number / boolean / date。

示例 ​

Query 参数 ​

ts
// GET /products?page=2&limit=20&inStock=1
const Query = object({
  page: optional(pipe(coerce.number(), integer(), min(1)), 1),
  limit: optional(pipe(coerce.number(), integer(), max(100)), 20),
  inStock: optional(coerce.boolean(), false),
});

parse(Query, req.query); // { page: 2, limit: 20, inStock: true }

FormData ​

ts
const data = validate(Form, Object.fromEntries(new FormData(form)));

另请参阅 ​