Ros*_*ote 5 inheritance constructor class typescript
我有以下代码(简化):
class Component {
}
class CameraComponent extends Component {
foo: number;
constructor(bar: number) {
super()
}
}
function doSomething(klass: typeof Component) {
}
doSomething(CameraComponent);
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
TS2345: Argument of type 'typeof CameraComponent' is not assignable to parameter of type 'typeof Component'.
如果我修改CameraComponent
为它工作正常:
class CameraComponent extends Component {
foo: number;
constructor() {
super()
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么遗漏的吗?为什么不能更改构造函数签名?有什么方法可以让我在不求助的情况下完成这项工作吗any
?
编码的不仅是必须返回 a 的构造函数typeof Component
这一事实,而且还包括该构造函数的参数。因此,如果您传入需要不同数量的参数,您将收到错误klass
Component
CameraComponent
如果你想接受任何返回 a 的构造函数,Component
你可以使用new (...a: any[]) => Component
class Component {
}
class CameraComponent extends Component {
foo: number;
constructor(bar: number) {
super()
}
}
function doSomething(klass: new (...a: any[]) => Component) {
}
doSomething(CameraComponent);
Run Code Online (Sandbox Code Playgroud)