检查Type <t>是否扩展了特定的类

时间:2017-09-21 22:49:44

标签: angular typescript

在Angular / TypeScript中,如何在运行时检查Type<T>所代表的类型是否扩展了某个特定的类BaseClass

例如,假设我们使用ApplicationRef.componentTypes来获取Type<any>[]。现在,我们想要遍历它并检查当前Type<any>是否扩展了一些BaseClass

const types: Type<any>[] = this.applicationRef.componentTypes;

this.navigationComponents = types.filter((type: Type<any>) => {
    // Here we need check whether type extends BaseClass
});

上面检查的代码应该是什么?

1 个答案:

答案 0 :(得分:1)

由于原型继承的工作方式,您可以使用prototypeinstanceof来确定它是否扩展BaseClass

types.filter((type: Type<any>) => type.prototype instanceof BaseClass);