一个开箱即用的变量类型判断库
其中包括了一些日常开发中常用得到的函数工具
默认是TypeScript版本,如需在js中使用去掉类型标注即可
const opt = Object.prototype.toString;
/**
* 检查给定对象是否为数组。
*/
export function isArray(obj: any): obj is any[] {
return opt.call(obj) === '[object Array]';
}
/**
* 检查给定对象是否为普通对象。
*/
export function isObject(obj: any): obj is Record<string, any> {
return opt.call(obj) === '[object Object]';
}
/**
* 检查给定对象是否为字符串。
*/
export function isString(obj: any): obj is string {
return opt.call(obj) === '[object String]';
}
/**
* 检查给定对象是否为数字。
*/
export function isNumber(obj: any): obj is number {
return opt.call(obj) === '[object Number]' && !isNaN(obj);
}
/**
* 检查给定对象是否为正则表达式。
*/
export function isRegExp(obj: any): obj is RegExp {
return opt.call(obj) === '[object RegExp]';
}
/**
* 检查给定对象是否为文件。
*/
export function isFile(obj: any): obj is File {
return opt.call(obj) === '[object File]';
}
/**
* 检查给定对象是否为 Blob。
*/
export function isBlob(obj: any): obj is Blob {
return opt.call(obj) === '[object Blob]';
}
/**
* 检查给定对象是否为 undefined。
*/
export function isUndefined(obj: any): obj is undefined {
return obj === undefined;
}
/**
* 检查给定对象是否为 null。
*/
export function isNull(obj: any): obj is null {
return obj === null;
}
/**
* 检查给定对象是否为函数。
*/
export function isFunction(obj: any): obj is (...args: any[]) => any {
return typeof obj === 'function';
}
/**
* 检查给定对象是否为空对象。
*/
export function isEmptyObject(obj: any): boolean {
return isObject(obj) && Object.keys(obj).length === 0;
}
/**
* 检查给定对象是否存在(即不是 null 或 undefined)。
*/
export function isExist(obj: any): boolean {
return obj !== null && obj !== undefined;
}
/**
* 检查给定对象是否为 Window 对象。
*/
export function isWindow(obj: any): obj is Window {
return opt.call(obj) === '[object Window]';
}
/**
* 检查给定对象是否为布尔值。
*/
export function isBoolean(obj: any): obj is boolean {
return opt.call(obj) === '[object Boolean]';
}
/**
* 检查给定对象是否为日期对象。
*/
export function isDate(obj: any): obj is Date {
return opt.call(obj) === '[object Date]';
}
/**
* 检查给定对象是否为 Promise 对象。
*/
export function isPromise(obj: any): obj is Promise<any> {
return opt.call(obj) === '[object Promise]';
}
/**
* 检查给定对象是否为 Set 对象。
*/
export function isSet(obj: any): obj is Set<any> {
return opt.call(obj) === '[object Set]';
}
/**
* 检查给定对象是否为 Map 对象。
*/
export function isMap(obj: any): obj is Map<any, any> {
return opt.call(obj) === '[object Map]';
}
/**
* 检查给定对象是否为 Symbol。
*/
export function isSymbol(obj: any): obj is symbol {
return opt.call(obj) === '[object Symbol]';
}
/**
* 检查给定对象是否为 BigInt。
*/
export function isBigInt(obj: any): obj is bigint {
return opt.call(obj) === '[object BigInt]';
}
/**
* 检查给定对象是否为 Error 对象。
*/
export function isError(obj: any): obj is Error {
return opt.call(obj) === '[object Error]';
}
/**
* 检查给定对象是否为 ArrayBuffer。
*/
export function isArrayBuffer(obj: any): obj is ArrayBuffer {
return opt.call(obj) === '[object ArrayBuffer]';
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。