实现接口的类型检查组件

Typechecking Components that implement an Interface

在 Angular 中,我想为实现我传递给 class.

的特定接口的组件指定类型

示例: Class A 有这个签名

class A {
  constructor(public component: ?) {}
}

然后我们声明一个接口I

export interface I<T> {
  setData(data: T): void;
}

组件B实现了接口I

class B implements I<string> {
  setData(data: string) { ... }
}

现在的问题是,不仅组件 B 实现了 I,组件 C、D 和 E 也实现了。此外 classA 应该能够处理组件 B、C、D 和 E,即所有组件实现接口 I 的组件。 我可以在 class A 中指定组件类型是任何实现接口 I 的组件吗?我现在的解决方案是

component: any

但我想说明它可以是任何限制,它实现了 I.

还有其他方法吗?

以下对我有用:

class A {
  constructor(public component: new (...args: any[]) => I<any>)
}