我如何接受react组件构造函数作为typescript中的函数参数

时间:2017-12-06 02:13:10

标签: typescript typescript2.0

import { Component} from "react";

export class Test extends Component<{}, {}> {
      render() {
        return "Hello";
      }
    }

    function myFunction<P, S, C extends Component<P, S>>(c: C): void {
      console.log("ctor", c);
    }

    const s = myFunction(Test);

错误:

  

类型'typeof Test'的参数不能分配给类型的参数   'Component&lt; {},{}&gt;'。 'typeof'类型中缺少属性'setState'   测试'。 07:35:53 - 编译完成注意文件更改。

我是否需要使用super。(..)实现原始反应Component类的所有成员?

1 个答案:

答案 0 :(得分:2)

您需要将C的类型声明为扩展返回组件的新函数的内容:

import { Component} from "react";

export class Test extends Component<{}, {}> {
    render() {
        return "Hello";
    }
}

function myFunction<P, S, C extends new () => Component<P, S>>(c: C): void {
    console.log("ctor", c);
}

const s = myFunction(Test);