希望这是有道理的,但我正在尝试了解如何获取某个类型的对象上存在的元素,但该元素被定义为类型谓词。
即Team
被定义为
let team$: Observable<ErrorModel | Team>
,因此成功调用此可观察对象的结果是类型Team
,它具有一个code
,而ErrorModel
没有,因此打字机棉绒说code does not exist on type ErrorModel | Team
所以基本上
return team$.subscribe(response => {
console.log(response.code);
}
在这种情况下,我怎么说response.code
-即使我进行了typeof
,它仍然会给我带来棉绒错误。
答案 0 :(得分:1)
由于结果可以是Team
或ErrorModel
,因此编译器将只允许您访问两者的公共属性。您可以使用类型防护来缩小response
的类型。在这种情况下,in
类型防护:
team$.subscribe(response => {
if ('code' in response) console.log(response.code);
});
答案 1 :(得分:1)