如何使用TypeScript中的某些接口描述React组件的类型?

时间:2019-12-14 06:03:49

标签: reactjs typescript

我正在努力做的是创建装饰器,该装饰器使用实现某种接口的类。装饰器应扩展该类并访问子类中的接口方法。

我要定义的课程:

interface ComponentWithInterfaceClass extends React.ComponentClass {
  prototype: { requiredMethod(): void };
}

我的第一种方法是在装饰器函数中将其用作类型:

function someDecorator1(targetClass: ComponentWithInterfaceClass) {
  const ExtendedTarget = class extends targetClass {};
}

但是这似乎要求子类实现requiredMethod()。不明白为什么会这样,但是我得到了一个错误:

  

类型“ ExtendedTarget”中缺少属性“ requiredMethod”,但类型“ {{requiredMethod())是必需的:void; }'

我还试图将类型限制为ComponentWithInterfaceClass的子类:

function someDecorator2<T extends ComponentWithInterfaceClass>(targetClass: T) {
  const ExtendedTarget =  class extends targetClass {};
}

这使编译器告诉我:

  

类型'T'不是构造函数类型。

方法和/或如何正确实施有什么问题?

0 个答案:

没有答案