Typescript typeof React.Component的子类

时间:2018-06-28 02:48:43

标签: reactjs typescript

我有一个基类,它扩展了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'.
}

1 个答案:

答案 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
}