【发布时间】:2021-09-07 23:43:32
【问题描述】:
我在尝试检查 angular 类型时遇到问题。
export interface DynamicComponentConfig {
name: string;
component: Type<any>;
}
export class DynamicInputComponent extends DynamicComponentBase {
}
export class DynamicDatePickerComponent extends DynamicComponentBase {
}
export class DynamicComponentBase {
@Input() group: FormGroup;
@Input() form: FormGroupDirective;
}
当我创建一个持有引用类型(不是该类型的实例)的实例时:
let conf: DynamicComponentConfig = {
component: DynamicInputComponent,
name: 'Surname'
};
并传递给负责动态创建我的组件的服务,我需要检查类型,但 instanceof 不起作用:
if (conf.component instanceof DynamicComponentBase) {
...
}
只有当我直接检查它所属的类型时它才有效,但我有几个组件都继承自 DynamicComponentBase:
if (conf.component === DynamicInputComponent || conf.component === DynamicDatePickerComponent || ...) {
...
}
检查 config.component.prototype 我得到 DynamicComponentBase {constructor: ƒ},但如果我检查 config.component.prototype === DynamicComponentBase 我得到 false
所以我正在寻找一种方法来检查它们是否从我的基本组件继承,知道吗?
【问题讨论】:
-
这能回答你的问题吗? Interface type check with Typescript
-
@SeanVieira 不是真的,正如 vaira 所说,conf.component 持有一个 typeOf DynamicInputComponent,而不是一个实例,但 typeof conf.component 返回“function”