type test = (value:object) => object|Promise<object>
const test = obj => $.Deferred().resolve(obj);
const result = test({});
// 我要在这里判断是promise类型
// result instanceof Promise 这种没法识别自己用Promise A+实现的。如$.Deferred
if (result && result.then) {
//业务逻辑
} else {
}
TypeScript 本身提供了
PromiseLike<T>
类型。另外,TypeScript 语法中有类型断言函数语法。如果只是想在
T
和PromiseLike<T>
之间进行判断:如果是判断任意类型是不是 PromiseLike,那么只需要把参数类型改为
unknown
就可以了。使用的时候,如果不带类型,resolve 数据的类型是
unknown
。如果带了类型,就直接给你识别成那个类型了,比如