如何从Typescript Angular中的谓词类型的对象中获取元素

时间:2019-01-14 00:05:00

标签: typescript

希望这是有道理的,但我正在尝试了解如何获取某个类型的对象上存在的元素,但该元素被定义为类型谓词。

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,它仍然会给我带来棉绒错误。

2 个答案:

答案 0 :(得分:1)

由于结果可以是TeamErrorModel,因此编译器将只允许您访问两者的公共属性。您可以使用类型防护来缩小response的类型。在这种情况下,in类型防护:

team$.subscribe(response => {
  if ('code' in response) console.log(response.code);
});

答案 1 :(得分:1)