number
有限数字。NaN、Infinity 和字符串都不会通过。
签名
ts
function number(msg?: Message): Schema<number>参数
| 参数 | 类型 | 说明 |
|---|---|---|
msg | Message | 自定义信息。替换该 Schema 所有错误的默认信息 |
接受的值
满足 Number.isFinite(value) === true 的数字。零是有效值,而不是空值。
undefined、null 和 '' 都被视为空值 —— 详见 空值。
错误代码
| 代码 | 触发条件 | 默认信息 |
|---|---|---|
required | 值为空 | Required |
number | 不是数字、NaN 或 Infinity | Must be a number |
可以修改这些文本:见 错误信息与国际化。
来自表单和 query 的数字
HTML 表单和 query 字符串中的数字以字符串形式提交("42")。请使用 coerce.number —— 它会把字符串转换为数字。
示例
商品数量
ts
const qty = pipe(number(), integer(), min(1), max(99));
validate(qty, 3); // 有效
validate(qty, '3'); // Must be a number —— 需要 coerce.number()
validate(qty, 0); // Must be at least 1另请参阅
- coerce.number:从字符串获取数字
- min
- max
- integer