将子类的实例从父变量分配给子变量

时间:2017-08-24 02:17:32

标签: angular typescript

我有一个名为MyClass的父类。它有两个孩子定义为:

export class MyChildFirst extends MyClass {...}
export class MyChildSecond extends MyClass {...}

MyClass的每个实例都属于两个孩子中的一个。然后我有一个MyClass数组。我循环遍历数组,我想将属于MyChildSecond的MyClass实例分配给MyChildSecond数组。

var bigArray = new Array<MyClass>();
// ...
// populate that array
// ...
var smallArray = new Array<MyChildSecond>();
for (var element of bigArray) {
   if (element.constructor.name === 'MyChildSecond') {
      smallArray[smallArray.length] = element;
   }
}

但是,这不起作用,因为即使代码确保只将MyChildSecond分配给数组,它也会将'element'视为MyClass,因此无法将其分配给包含MyChildSecond的变量。我该如何实现呢?

1 个答案:

答案 0 :(得分:0)

您可以将instanceof与TypeScript中的类一起使用。

var smallArray = bigArray.filter(
                   (element)=>element instanceof MyChildSecond
                 ) as MyChildSecond[];