3.2.0 • Published 12 months ago

typecasts v3.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

typecasts

类型转换并验证转换结果是否满足条件,并且支持 TypeScript 类型输出

使用样例

import { typeCast } from "typecasts";

const var1 = typeCast("123", { type: "int" });

console.log(var1); // 123
console.log(typeof var1); // number

使用 typeCastPick 挑选对象中的多个数据

import { typeCastPick } from "typecasts";

// 输入数据
const inputData = {
  a: 1,
  b: 'yes',
  c: 'str  ',
  d: '1,2,3,4',
  e: '2021-5-13 13:11:22',
  f: 'http://test',
  obj: {
    g: 2,
    h: 'a,b,c,d'
  }
};

// 类型处理
const v = typeCastPick(inputData, {
  a: '!int',  // 整数类型,! 感叹号开头表示此项必须并且不能为null
  b: 'bool',
  c: 'trim',
  d: 'int[]', // 如果以 [] 结尾则代表转换为类型数组形式
  e: 'date',
  f: {
    // 如果不使用快捷类型,可以分别指定类型的转换规则
    type: 'trim',         // 目标类型
    default: 'not-url',   // 默认值
    splitter: ',',        // 是否切割为数组,定义切割字符
    minItems: 1,          // 切割数组后最少需要的元素数量
    maxItems: 10,         // 切割数组后最多不能超过的元素数量
    // 数据验证规则
    validate: {
      url: true, // 验证是否符合链接格式
      maxLength: 500, // 字符串长度不能超过 500
      // 更多规则参照下表 “支持的数据验证”
    },
  },
  obj: {
    // 嵌套对象
    type: {
      g: '!int',
      g: '~trim[]'
    }
  }
});

console.log(v);

// 输出
{
  a: 1,
  b: true,
  c: 'str',
  d: [ 1, 2, 3, 4 ],
  e: new Date('2021-5-13 13:11:22'),
  f: 'http://test',
  obj: {
    g: 2,
    h: [ 'a', 'b', 'c', 'd' ]
  }
}

类型规则快捷方式

例如 int 类型名称,可以写成 !int 或者 int[] 或两者的组合 !int[]

类型前缀规则 | 前缀 | 可传入类型 | --- | --------- | 无 | 非必填, 允许 null | ? | 非必填, 不允许 null | ~ | 必填, 允许 null | ! | 必填, 不允许 null

支持的转换类型

类型名目标类型功能描述
numbernumber任何数值类型,整数、浮点
intnumber转换为整数类型
floatnumber转换为浮点数类型
boolboolean转换为布尔类型,只有值为 y, 1, yes, on, true (不区分类型)才会被判定为 true,其他都为 false
stringstring转换为字符串
trimstring转换为字符串并去除两端的空字符
trim1string转换为字符串并去除两端的空字符,但结果不能为空字符串
anyany不进行类型转换,直接输出原始类型
dateDate转换为日期类型

支持的数据验证

验证名功能描述参数
lt小于 <any
lte小于等于 <=any
gt大于 >any
gte大于等于 >=any
eq等于 ==any
neq不等于 !=any
maxLength最大长度,调用值的 .length 属性number
minLength最小长度,调用值的 .length 属性number
in只能出现的值any[]
notIn不能出现的值any[]
regexp正则表达式匹配string \| RegExp
email是否满足Email地址规则boolean
slug是否满足URL路径规则boolean
url是否满足 URL 规则string[] \| boolean
2.8.0

1 year ago

3.0.4

1 year ago

3.0.3

1 year ago

3.2.0

12 months ago

3.0.2

1 year ago

3.0.1

1 year ago

3.0.5

1 year ago

3.0.0

1 year ago

2.7.0

1 year ago

2.7.2

1 year ago

2.7.1

1 year ago

3.1.2

12 months ago

3.1.1

1 year ago

3.1.0

1 year ago

2.5.0

2 years ago

2.4.1

2 years ago

2.4.0

2 years ago

2.6.0

2 years ago

2.4.2

2 years ago

2.3.2

2 years ago

2.3.3

2 years ago

2.3.0

2 years ago

2.3.1

2 years ago

1.9.1

2 years ago

1.9.0

2 years ago

2.0.3

2 years ago

2.2.0

2 years ago

2.0.2

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.6

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.9.2

2 years ago

1.10.1

2 years ago

1.8.7

2 years ago

1.8.6

2 years ago

1.8.5

2 years ago

1.8.2

3 years ago

1.8.1

3 years ago

1.8.0

3 years ago

1.8.4

3 years ago

1.8.3

3 years ago

1.2.0

3 years ago

1.7.0

3 years ago

1.6.0

3 years ago

1.5.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.1.0

3 years ago

1.0.0

3 years ago