我正在努力做的是创建装饰器,该装饰器使用实现某种接口的类。装饰器应扩展该类并访问子类中的接口方法。
我要定义的课程:
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'不是构造函数类型。
方法和/或如何正确实施有什么问题?