红枫心声社区

 找回密码
 立即注册

手机动态码快速登录

手机号快速注册登录

搜索
热搜: 活动
查看: 378|回复: 0

vue-next(vue3)中常见的类型判断方法封装

[复制链接]

33

主题

33

帖子

219

积分

正式会员

Rank: 3Rank: 3

积分
219

活跃会员

发表于 2022-5-2 11:20:45 | 显示全部楼层 |阅读模式
typescript 中常见的公用方法封装:

hasOwn: 判断val是否含有属性key;

const hasOwnProperty = Object.prototype.hasOwnProperty
export const hasOwn = (
  val: object,
  key: string | symbol
): key is keyof typeof val => hasOwnProperty.call(val, key)

复制代码

isArray:判断是否为数组;

export const isArray = Array.isArray
复制代码

isFunction: 判断是否为函数

export const isFunction = (val: unknown): val is Function =>
  typeof val === 'function'
复制代码

isString:判断是否为字符串

export const isString = (val: unknown): val is string => typeof val === 'string'
复制代码

isSymbol:判断是否为symbol

export const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol'
复制代码

isObject:判断是否为object

export const isObject = (val: unknown): val is Record<any, any> =>
  val !== null && typeof val === 'object'

复制代码

isPromise:判断是否为promise

export function isPromise<T = any>(val: unknown): val is Promise<T> {
  return isObject(val) && isFunction(val.then) && isFunction(val.catch)
}
复制代码

isPlainObject:判断是否为plainObject

export const objectToString = Object.prototype.toString

export const toTypeString = (value: unknown): string =>
  objectToString.call(value)

export const isPlainObject = (val: unknown): val is object =>
  toTypeString(val) === '[object Object]'
您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则

快速回复 返回顶部 返回列表