我正在构建一个应用程序,部分代码允许开发人员指定他们想要呈现某个部分的组件。我希望用户知道他们需要实现一个接口,但我不确定如何正确写入输入。
export interface ICustomComponent {
templateObject: any;
}
export class MyComponent implements ICustomComponent {
}
export class MyLib {
constructor(
private yourComponent: ICustomComponent
) {}
}
new MyLib(MyComponent); <== Fails
我正在使用Angular编写代码,我无法运行new运算符,但让Angular解析并构造该组件。
Here一个说明我问题的例子。
如何处理这个问题?
答案 0 :(得分:2)
由于MyLib
需要类构造函数而不是类实例,因此需要为类构造函数定义一个接口,并指定它返回带有ICustomComponent
接口的实例:
interface ICustomComponent {
templateObject: any;
}
interface ICustomComponentConstructor {
new (...deps: any[]): ICustomComponent;
}
然后你可以像这样使用它:
export class MyComponent implements ICustomComponent {
templateObject: any;
}
export class MyLib {
constructor(private yourComponent: ICustomComponentConstructor) {
}
}
new MyLib(MyComponent);
您可以阅读有关类构造函数和实例here的接口。