我有一个基类,它扩展了React.Component
,并被几个子类扩展了。现在,我想将Parent
类的类型作为属性的类型,并且所有Child
类都应对该属性有效。我尝试过this answer,但是当Parent
扩展React.Component
时不起作用。
class Parent extends React.Component{}
class Child1 extends Parent {}
class Child2 extends Parent {}
type F = {
cp: { new(): Parent }
}
let f: F = {
cp: Child1 //type 'typeof Child' is not assignable to type 'new () => Parent'.
}
答案 0 :(得分:1)
您的构造函数签名要求该类型的构造函数为空,但是从React.Component
继承的构造函数具有两个参数。这就是为什么typeof Child
无法分配给new ()=> Parent
的原因。您需要指定构造函数采用以下参数:
class Parent extends React.Component { }
class Child1 extends Parent { }
type F = {
cp: { new(props: any, context?: any): Parent }
}
let f: F = {
cp: Child1 //ok
}