源码分析 - vue3 源码 isPromise 为什么不用 toRawType实现?

 

问题描述:

vue3 源码 isPromise 为什么不用 toRawType实现

export const isFunction = (val: unknown): val is Function =>
  typeof val === 'function'

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

export const isPromise = <T = any>(val: unknown): val is Promise<T> => {
  return isObject(val) && isFunction(val.then) && isFunction(val.catch)
}

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

export const toRawType = (value: unknown): string => {
  // extract "RawType" from strings like "[object RawType]"
  return toTypeString(value).slice(8, -1)
}

这个 isPromise 完全可以用 export const isPromise = (val)=>toRawType(val)==='Promise'实现,

为什么要上面的 isFunction isObject实现


 

第 1 个答案:

polyfill出来的promise不一定能通过toRawType检测出来


typescript - 新搭react项目,ts报了几处错误,主要是类型,求助,是不是配置的不对?:代码包:链接: https://pan.baidu.com/s/1Le5d... 提取码: m87e