6-9 面试题:自定义守卫如何判断 Promise 类型

来源:6-9 面试题:自定义守卫如何判断 Promise 类型

jimmys

2023-03-23

function fetchData(): Promise<void> {
    return new Promise((resolve, reject) => {
        resolve();
    })
}

function isPromise(value: any): value is Promise<any> {
    return value instanceof Promise;
}

// 使用自定义守卫来检查 fetchResult 是否为 Promise 类型
const fetchResult = fetchData();
if (isPromise(fetchResult)) {
    fetchResult.then(data => {
        // 在这里可以安全地访问 data
    });
}
写回答

2回答

媳妇的号我来学

2024-01-09

const promise = <any>Promise.resolve()
const isPromise = (p: any): p is Promise<any> => {
return Object.prototype.toString.call(p) === '[object Promise]'
}

if (isPromise(promise)) {
promise.then()
} else {
//不是Promise
}


0
0

keviny79

2023-03-23

可以的,正确

0
0

TypeScript 从入门到深度掌握,晋级TS高手

200+技术点,22 场景应用,Vue3 源码 TS 用法剖析

430 学习 · 53 问题

查看课程