在ts中使用ajv让数组类型必填,数组内有两个空“”,也必须判断
时间: 2024-03-10 15:43:36 浏览: 125
在 TypeScript 中使用 Ajv 让数组类型必填,数组内有两个空字符串 "" 也必须判断,可以这样实现:
首先,定义一个 JSON Schema,用于验证数组类型的数据:
```typescript
const schema = {
type: 'array',
items: {
type: 'string',
minLength: 1
},
minItems: 1,
additionalItems: false
};
```
这个 JSON Schema 限制了数据必须是一个非空字符串数组,且数组长度至少为 1,不能有多余的项。
然后,使用 Ajv 进行验证:
```typescript
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile(schema);
const data1 = ['a', 'b', 'c']; // 合法数据
const data2 = ['', '', '']; // 不合法数据
console.log(validate(data1)); // true
console.log(validate(data2)); // false
console.log(validate.errors); // [{ keyword: 'minLength', dataPath: '[0]', schemaPath: '#/items/minLength', params: { limit: 1 }, message: 'should NOT be shorter than 1 characters' }]
```
可以看到,`data1` 是合法数据,`data2` 是不合法数据,且错误信息为数组第 0 项的长度不能小于 1。
需要注意的是,Ajv 的 `additionalItems` 选项默认为 `true`,即允许有多余的数组项。为了限制数组长度,需要将 `additionalItems` 设置为 `false`。
阅读全文