@cmtlyt/cl-utils
Version:
152 lines (127 loc) • 3.24 kB
Markdown
### 类型检查主要函数声明
```typescript
interface ITypeConfig {
type: string
required?: boolean
nullable?: boolean
subPropsType?: ITypeConfig
subProps?: ITypeConfig[]
key?: string
regexp?: TRegType[]
}
interface ITypeConfigOption {
props: ITypeConfig[]
return?: ITypeConfig
}
/**
*
* @param {Function} callback
* @param {ITypeConfigOption} typeConfig
* @returns {(...args) => Promise<any>}
*/
useTypeCheckHandle(callback, typeConfig)
/**
* 直接检查数据类型
* @param {T} data
* @param {ITypeConfig[] | ITypeConfig} typeConfig
* @returns {boolean}
*/
checkTypeHandle(data, typeConfig)
```
### 0.5.0
- 新增 `lodash` 模块 复刻了 `lodash.js` 包的部分方法
- `baseFunc` 模块新增 `flatObj`, `getDOMSelector`, `getDOMXPath` 方法
- `upgradeObject` 模块 `flat` 方法支持自定义分隔符
- `checkType` 模块 `checkTypeHandle` 方法直接返回布尔值
### 0.4.2
- `baseFunc` 模块新增 `getHash` 和 `createUUID` 方法
### 0.4.0
- 新增字符串正则验证
- 修改 `useCheckType` 函数为`useTypeCheckHandle`
- 新增 `checkTypeHandle` 用于直接检查数据类型
### 0.3.8
- 对象类型支持对所有字段进行统一类型判断
### 0.3.7
- 复合类型 复杂检查 失败问题修复
### 0.3.6
- 增加多类型检查及 any 类型
```javascript
function test(id) {
return id
}
useCheckType(test, { props: [{ type: any }], return: { type: 'string,object' } })
```
### 0.3.5
- 增加异步方法支持
### 0.3.4
- 修改 package.json 脚本
- 新增 package.json module 字段
### 0.3.0
添加了`useCheckType`方法 - 用于对函数的入参和出参进行类型检查
```javascript
function test(obj, num, str, bool, arr) {
return {}
}
useCheckType(test, {
props: [
{
type: 'object',
subProps: [
{ key: 'name', type: 'string' },
{ key: 'age', type: 'number' },
{ key: 'hasDel', type: 'boolean' },
{
key: 'other',
type: 'object',
required: false,
nullable: true,
subProps: [
{ key: 'othre_num', type: 'number' },
{ key: 'other_string', type: 'string' },
{ key: 'other_boolean', type: 'boolean' },
{ key: 'other_arr', type: 'array', subPropsType: { type: 'string' } },
],
},
],
},
{
type: 'number',
},
{
type: 'string',
},
{
type: 'boolean',
},
{
type: 'array',
subProps: [
{ type: 'number' },
{ type: 'string', nullable: true },
{ type: 'boolean' },
{
type: 'object',
subProps: [
{ key: 'arr_n', type: 'number', nullable: false },
{ key: 'arr_s', type: 'string', nullable: true },
{ key: 'arr_NaN', type: 'number', nullable: true },
],
},
],
},
],
return: {
type: 'object',
},
})(
{
name: '123',
age: 1,
hasDel: true,
},
1,
'a',
true,
[1, '', true, { arr_n: 123, arr_s: '', arr_NaN: NaN }],
)
```