如何接受react组件构造函数作为typescript中的函数参数 从“react”导入{Component}; 导出类测试扩展组件{ render(){ 回复“你好”; } } 函数myFunction(c:c):void{ 控制台日志(“ctor”,c); } 常数s=myFunction(测试);
错误: 类型为“typeof Test”的参数不能分配给类型为的参数 “组件”。类型“typeof”中缺少属性“setState” 测试'。07:35:53-编译完成。监视文件更改如何接受react组件构造函数作为typescript中的函数参数 从“react”导入{Component}; 导出类测试扩展组件{ render(){ 回复“你好”; } } 函数myFunction(c:c):void{ 控制台日志(“ctor”,c); } 常数s=myFunction(测试);,typescript,typescript2.0,Typescript,Typescript2.0,错误: 类型为“typeof Test”的参数不能分配给类型为的参数 “组件”。类型“typeof”中缺少属性“setState” 测试'。07:35:53-编译完成。监视文件更改 我是否需要使用super.(..)实现原始react组件类的所有成员 您需要将C的类型声明为扩展返回组件的新函数的类型: import { Component} from "react"; export class Test extends Component<{}, {}> { rende
我是否需要使用super.(..)实现原始react
组件
类的所有成员 您需要将C
的类型声明为扩展返回组件的新函数的类型:
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);
从“react”导入{Component};
导出类测试扩展组件{
render(){
回复“你好”;
}
}
函数myFunction Component>(c:c):无效{
控制台日志(“ctor”,c);
}
常数s=myFunction(测试);
仍有错误!,错误TS2345:类型为“typeof Test”的参数不能分配给类型为“new()=>Component”的参数。@这很有趣。同样的代码片段在编译时没有给我任何错误。事实上,我甚至可以毫无疑问地编写varx:new()=>Component=Test
。不确定我们的结果之间为什么有差异。你的打字脚本版本是什么?>tsc-v=version2.6.2Hmm。把我的更新到相同的,仍然没有问题。这是您在IDE中看到的错误还是在实际的tsc
命令输出中看到的错误?@等一下,我刚才想了一下。示例类没有构造函数,因此newable函数不接受任何参数。但是您的实际实现是否有构造函数参数?如果是这样,您可以尝试new(…args:any[])=>Component
。编辑:或用于更多类型安全新建(道具:P,状态:S)=>组件
。
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);