类型检查工具库
API 文档
getObjectType
获取值的准确类型字符串表示。
typescript
import { getObjectType } from '@mgcloud/lib-utils';
getObjectType({}); // '[object Object]'
getObjectType([]); // '[object Array]'
getObjectType('string'); // '[object String]'
getObjectType(new Date()); // '[object Date]'基础类型检查
isNil
检查值是否为 null 或 undefined。
typescript
import { isNil } from '@mgcloud/lib-utils';
isNil(null); // true
isNil(undefined); // true
isNil(0); // false
isNil(''); // falseisUndefined
检查值是否为 undefined。
typescript
import { isUndefined } from '@mgcloud/lib-utils';
isUndefined(undefined); // true
isUndefined(null); // false
isUndefined(''); // falseisString
检查值是否为字符串。
typescript
import { isString } from '@mgcloud/lib-utils';
isString('hello'); // true
isString(new String('hello')); // true
isString(123); // falseisNumber
检查值是否为数字(不包括 NaN)。
typescript
import { isNumber } from '@mgcloud/lib-utils';
isNumber(123); // true
isNumber(1.23); // true
isNumber(NaN); // false
isNumber('123'); // falseisBoolean
检查值是否为布尔类型。
typescript
import { isBoolean } from '@mgcloud/lib-utils';
isBoolean(true); // true
isBoolean(false); // true
isBoolean(1); // false
isBoolean('true'); // false复杂类型检查
isObject
检查值是否为普通对象(不包括数组、Map、Set等特殊对象)。
typescript
import { isObject } from '@mgcloud/lib-utils';
isObject({}); // true
isObject({ name: 'test' }); // true
isObject([]); // false
isObject(new Map()); // false
isObject(new Date()); // falseisArray
检查值是否为数组。
typescript
import { isArray } from '@mgcloud/lib-utils';
isArray([]); // true
isArray([1, 2, 3]); // true
isArray(new Array(3)); // true
isArray({}); // falseisFunction
检查值是否为函数。
typescript
import { isFunction } from '@mgcloud/lib-utils';
isFunction(() => {}); // true
isFunction(function() {}); // true
isFunction(class {}); // true
isFunction({}); // falseisPromise
检查值是否为 Promise 对象。
typescript
import { isPromise } from '@mgcloud/lib-utils';
isPromise(Promise.resolve()); // true
isPromise(new Promise(() => {})); // true
isPromise({ then: () => {} }); // falseisDate
检查值是否为有效的 Date 对象。
typescript
import { isDate } from '@mgcloud/lib-utils';
isDate(new Date()); // true
isDate(new Date('invalid')); // false
isDate('2024-01-01'); // falseisRegExp
检查值是否为正则表达式对象。
typescript
import { isRegExp } from '@mgcloud/lib-utils';
isRegExp(/test/); // true
isRegExp(new RegExp('test')); // true
isRegExp('/test/'); // falseisMap
检查值是否为 Map 对象。
typescript
import { isMap } from '@mgcloud/lib-utils';
isMap(new Map()); // true
isMap(new Set()); // false
isMap({}); // falseisSet
检查值是否为 Set 对象。
typescript
import { isSet } from '@mgcloud/lib-utils';
isSet(new Set()); // true
isSet(new Map()); // false
isSet([]); // false类型断言
assertType
断言值为指定类型,如果类型不匹配则抛出错误。
typescript
import { assertType, isString } from '@mgcloud/lib-utils';
// 不会抛出错误
assertType('hello', isString);
// 会抛出 TypeError: Value is not of expected type: 123
assertType(123, isString);
// 自定义错误消息
assertType(123, isString, '值必须是字符串类型');类型安全
所有函数都包含了 TypeScript 类型谓词(type predicates),可以在类型收窄时提供类型推断支持:
typescript
const value: unknown = 'hello';
if (isString(value)) {
// 在这个作用域内,TypeScript 知道 value 是 string 类型
console.log(value.toUpperCase());
}注意事项
isNumber函数会将NaN视为非数字类型isObject函数不会将数组、Map、Set、Date 或 RegExp 对象视为普通对象isPromise检查不仅验证对象是否有then和catch方法,还会检查其内部[[Class]]标记isDate会验证日期对象是否有效,无效的日期对象将返回false
导出方法
typescript
import {
getObjectType,
isNil,
isUndefined,
isString,
isNumber,
isObject,
isBoolean,
isArray,
isFunction,
isPromise,
isDate,
isRegExp,
isMap,
isSet,
assertType,
} from '@mgcloud/lib-utils'