我有以下设置:
class Dog extends Animal{}
class Animal{}
基本的继承设置。现在我有一个包含所有动物的不同类
class Farm{
animals: Animal[];
}
现在在应用程序中的某一点我需要迭代数组,一旦找到一个狗我想将它分配给一个变量:
_.forEach(farm.animals, (animal:Animal)=>{
if(animal instanceof Dog){
this.dog = animal;
}
}
但这给了我两个错误。首先,instanceof不起作用,它说参数的右侧是null。
第二个错误是,类型Animal不能分配给Dog类型。当我将Animal声明为接口时,情况也是如此。
答案 0 :(得分:0)
instanceof
错误必须是错误的,instanceof
在那里很好。
你无法分配this.dog = animal;
的原因是你需要一个演员阵容(奇怪的是,我无法让TypeScript游乐场向我展示这个错误):
this.dog = <Dog>animal;
或
this.dog = animal as Dog;