array
数组,其中每个元素都用同一个 Schema 校验。
签名
ts
function array<T>(item: Schema<T>, msg?: Message): Schema<T[]>参数
| 参数 | 类型 | 说明 |
|---|---|---|
item | Schema<T> | 每个元素的 Schema |
msg | Message | 自定义信息。替换该 Schema 所有错误的默认信息 |
错误代码
| 代码 | 触发条件 | 默认信息 |
|---|---|---|
required | 值为空 | Required |
array | 不是数组 | Must be an array |
可以修改这些文本:见 错误信息与国际化。
注意事项
- 空数组
[]是有效值。要求至少一个元素:pipe(array(...), minLength(1))。 - 元素的错误路径包含索引:
items.2.title。 - 会校验所有元素,而不是在第一个错误处停止。
- 数组长度由
minLength、maxLength和length检查。
示例
订单商品
ts
const Order = object({
items: pipe(
array(object({ id: number(), qty: pipe(number(), integer(), min(1)) })),
minLength(1, '购物车为空'),
),
});
validate(Order, { items: [{ id: 1, qty: 0 }] }).errors; // { 'items.0.qty': 'Must be at least 1' }标签
ts
const tags = optional(array(pipe(string(), trim(), toLowerCase())), () => []);