一个开箱即用的变量类型判断库

其中包括了一些日常开发中常用得到的函数工具

默认是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]';
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值