我有一个名为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的变量。我该如何实现呢?
答案 0 :(得分:0)
您可以将instanceof
与TypeScript中的类一起使用。
var smallArray = bigArray.filter(
(element)=>element instanceof MyChildSecond
) as MyChildSecond[];