@ckpack/parameter
通过简单的配置就可以验证参数
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
const rule = {
isAdmin: 'boolean',
age: {
type: 'int',
min: 0,
max: 200,
},
ids: {
type: 'array',
itemType: 'int',
itemRule: {
min: 1
}
}
}
const data = {
isAdmin: true,
age: 18,
ids: ['1', '2', '3']
};
const errors = parameter.validate(rule, data);
如果类型为int
,则有以下选项规则
max
- 值的最大值,值必须 <= max
min
- 值的最小值,值必须 >= min
{
score: 'int',
}
// or
{
score: {
type: 'int',
min: 0,
max: 200,
}
}
如果类型为number
,则有以下选项规则
max
- 值的最大值,值必须 <= max
min
- 值的最小值,值必须 >= min
{
score: 'number',
}
// or
{
score: {
type: 'number',
min: 0,
max: 100,
}
}
如果类型为string
,则有以下选项规则
regex
- 检查字符串格式的正则表达式max
- 字符串的最大长度min
- 字符串的最小长度{
username: 'string',
}
// or
{
username: {
type: 'string',
regexp: /\S{4,20}/
}
}
检查是否是boolean
类型
{
isAll: 'boolean',
}
// or
{
isAll: {
type: 'boolean',
}
}
如果类型是数组,则有以下选项规则
itemType
- 此数组中每个项目的类型itemRule
- 此规则中每个项目的规则itemChecker
- 每个项目的检查器,在这种情况下,您可以省略 itemType
和 itemRule
max
- 数组的最大长度min
- 数组的最小长度{
ids: {
itemType: 'int',
itemRule: {
min: 1,
max: 1000,
},
min: 0,
max: 100,
}
}
如果类型是enum
,则有以下规则
enum
- 数组,其中的值必须为其中一个{
sex: ['man', 'woman']
}
// or
{
sex: {
type: 'enum'
enum: ['man', 'woman']
}
}
如果类型是对象,则有以下规则
rule
- 验证对象属性的对象
{
people: {
type: 'object',
rule: {
name: 'string',
age: {
isRequired: false,
type: 'int',
min: 1,
max: 200
}
}
}
}
你也可以定义自定义验证类型
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
// 验证是否为偶数
parameter.addRule('even', (rule, value) => {
return value % 2 === 0 ? null : `${value} is not even`;
});
// rule
{
someNumber: 'even'
}
// or
{
someNumber: {
type: "even",
}
}
对于自定义验证类型你也可以添加参数如:
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
// 验证能否被某个数字整除
parameter.addRule('times', (rule, value) => {
const { times } = rule;
return value % times === 0 ? null : `not an integer multiple of ${times}`;
});
// rule
{
someNumber: {
type: "times",
times: 3,
}
}
=
1
AoEiuV020 2021-09-30 19:11:04 +08:00 via Android
这种应该有更流行靠谱的轮子吧,
与其介绍具体用法,不如说说有什么优势,可以参考米式对比法, |