Skip to content
本章目录

【类型判断 —— getObjectTypeDetail】

功能: 判断数组的细粒度的数据类型,返回结果有以下这几种类型组成的一个数组详细结果:stringbigintbooleansymbolundefinedobjectfunctionarrayobjectdatenullintfloatinfiniteNaN

返回数组: [{ key: string ; value: any; type: returnTypeStr; }...]

注意: 这里返回的类型并没有:number | finite,因为number类型已经被细粒度的类型细化, 而finite则被intfloat类型代替

1-函数引入

js
  import { getObjectTypeDetail } from 'tj-jstools'
1

2-函数声明

ts
declare type returnTypeStr = 'string' | 'bigint' | 'boolean' | 'symbol' 
| 'undefined' | 'object' | 'function' | 'array' | 'object' | 'date' 
| 'null' | 'int' | 'float' | 'infinite' | 'NaN';

declare type objectTypeDetail = {
    key: string;
    value: any;
    type: returnTypeStr;
};

declare function getObjectTypeDetail(params: object, selectType?: returnTypeStr | 'number'): objectTypeDetail[];
1
2
3
4
5
6
7
8
9
10
11

3-使用示例

ts
    const testObj:object = {
    a: true,
    b: null,
    c: undefined,
    d: 6,
    e: 6.01,
    f: 1/0,
    g: {},
    h: [],
    i: () => {}
  }
  const res1:objectTypeDetail[] = getObjectTypeDetail(testObj) 
  /*
[
  { key: 'a', value: true, type: 'boolean' },
  { key: 'b', value: null, type: 'null' },
  { key: 'c', value: undefined, type: 'undefined' },
  { key: 'd', value: 6, type: 'int' },
  { key: 'e', value: 6.01, type: 'float' },
  { key: 'f', value: Infinity, type: 'infinite' },
  { key: 'g', value: {}, type: 'object' },
  { key: 'h', value: [], type: 'array' },
  { key: 'i', value: [Function: i], type: 'function' }
]
  */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

TIP

特别注意该方法返回的类型里面没有:number | finite;

ERROR

该方法接收的必须是一个对象类型的参数,且参数不能为空,否则将抛出错误

js
Uncaught Error: getXXXX方法的参数不能为空!
1

第二个参数可以筛选返回的类型

ts
  const testObj:object = {
    a: true,
    b: null,
    c: undefined,
    d: 6,
    e: 6.01,
    f: 1/0,
    g: {},
    h: [],
    i: () => {}
  }
  const res1:objectTypeDetail[] = getObjectTypeDetail(testObj,'infinite') 
  /*
[ { key: 'f', value: Infinity, type: 'infinite' } ]
  */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
第二个参数是number时注意:

当二个参数是number时,返回的数据类型只有:intfloat 类型的数据

ts
  const testObj:object = {
    a: true,
    b: null,
    c: undefined,
    d: 6,
    e: 6.01,
    f: 1/0,
    g: {},
    h: [],
    i: () => {}
  }
  const res1:objectTypeDetail[] = getObjectTypeDetail(testObj,'number') 
  /*
[
  { key: 'd', value: 6, type: 'int' },
  { key: 'e', value: 6.01, type: 'float' }
]
  */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Released under the MIT License.