我有如下方法:
abstract canDeactivate() : boolean | Promise<boolean>;
如何在调用方中管理方法的promise实现和布尔实现?
答案 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>
}