如何在Typescript中管理多个函数返回类型?

时间:2018-11-05 11:58:40

标签: typescript

我有如下方法:

abstract canDeactivate() : boolean | Promise<boolean>;

如何在调用方中管理方法的promise实现和布尔实现?

1 个答案:

答案 0 :(得分:1)

您需要使用类型防护来区分这两种情况:

abstract class Target {
    abstract canDeactivate() : boolean | Promise<boolean>;
}

declare let t: Target
var r = t.canDeactivate();
if (typeof r === 'boolean') { // type guard
    r // boolean
} else {
    r.then(v=> v)// r is Promise<bool>
}