如何使用类构造函数为类实例定义接口

时间:2017-09-18 03:43:22

标签: angular typescript prototype

我正在构建一个应用程序,部分代码允许开发人员指定他们想要呈现某个部分的组件。我希望用户知道他们需要实现一个接口,但我不确定如何正确写入输入。

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一个说明我问题的例子。

如何处理这个问题?

1 个答案:

答案 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的接口。