考虑以下TypeScript代码:
class A {public name: string = 'A';}
interface B {num: number;}
class Foo {
get mixed(): Array<A | B> {
const result = [];
for (var i = 0; i < 100; i ++) {
result.push(Math.random() > 0.5 ? new A() : {num: 42});
}
return result;
}
print(): string {
return this.mixed.map(item => {
if (item instanceof A) {
return item.name;
}
return item.num;
}).join('\n');
}
}
在print
函数内部,我需要根据的类型返回不同的值item
。对于type A
,它很容易使用instanceof
,但是对于B
我来说,instanceof
因为它B
是一个接口,所以不能使用。
打字稿不明白,它说行item.num
,item
类型是B
肯定的,也没有必要抱怨。
您可以使用
return (<B>item).num;
给TypeScript编译器一个提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句