判断数据类型

文章介绍了使用JavaScript编写的系列函数,用于检查给定值的数据类型,如number、string、boolean等,并通过`Object.prototype.toString.call(data)`方法实现不同类型判断。
摘要由CSDN通过智能技术生成
/** 数据类型 */
enum EnumDataType {
  number = '[object Number]',
  string = '[object String]',
  boolean = '[object Boolean]',
  null = '[object Null]',
  undefined = '[object Undefined]',
  object = '[object Object]',
  array = '[object Array]',
  function = '[object Function]',
  date = '[object Date]',
  regexp = '[object RegExp]',
  promise = '[object Promise]',
  set = '[object Set]',
  map = '[object Map]',
  file = '[object File]'
}

export function isNumber<T extends number>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.number;
}

export function isString<T extends string>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.string;
}

export function isBoolean<T extends boolean>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.boolean;
}

export function isNull<T extends null>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.null;
}

export function isUndefined<T extends undefined>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.undefined;
}

export function isObject<T extends Record<string, any>>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.object;
}

export function isArray<T extends any[]>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.array;
}

export function isFunction<T extends (...args: any[]) => any | void | never>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.function;
}

export function isDate<T extends Date>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.date;
}

export function isRegExp<T extends RegExp>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.regexp;
}

export function isPromise<T extends Promise<any>>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.promise;
}

export function isSet<T extends Set<any>>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.set;
}

export function isMap<T extends Map<any, any>>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.map;
}

export function isFile<T extends File>(data: T | unknown): data is T {
  return Object.prototype.toString.call(data) === EnumDataType.file;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值