源码分析 - 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