在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
});
上面检查的代码应该是什么?
答案 0 :(得分:1)
由于原型继承的工作方式,您可以使用prototype
和instanceof
来确定它是否扩展BaseClass
:
types.filter((type: Type<any>) => type.prototype instanceof BaseClass);