Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Typescript自定义类型声明出错_Reactjs_Generics_Typescript - Fatal编程技术网

Reactjs Typescript自定义类型声明出错

Reactjs Typescript自定义类型声明出错,reactjs,generics,typescript,Reactjs,Generics,Typescript,我编写了以下类型声明: 错误TS2345:类型为“typeof Application”的参数不可赋值 到“Component”类型的参数。属性“setState”为 “应用程序类型”类型中缺少 我很好奇这里出了什么问题。之所以发生这种情况,是因为r的第一个参数是一个具有签名的类/构造函数React.Component,而不是React.Component 因此,切换到以下选项可以修复错误: interface IRDOMFacade extends React.ReactDOM { (

我编写了以下类型声明:

错误TS2345:类型为“typeof Application”的参数不可赋值 到“Component”类型的参数。属性“setState”为 “应用程序类型”类型中缺少


我很好奇这里出了什么问题。

之所以发生这种情况,是因为r的第一个参数是一个具有签名的类/构造函数
React.Component
,而不是
React.Component

因此,切换到以下选项可以修复错误:

interface IRDOMFacade extends React.ReactDOM {
    (
        component: new (...args: any[]) => React.Component<any, any>, 
        properties?: Object, 
        children?: React.ReactElement<any>|Array<React.ReactElement<any>>
    ): React.ReactElement<any>
}
接口IRDOMFacade扩展了React.ReactDOM{ ( 组件:新建(…args:any[])=>React.component, 属性?:对象, 子元素?:React.ReactElement |数组 ):React.React元素 }
我将把它打开几天,以防有人有更惯用的解决方案。

这是因为r的第一个参数是一个具有签名
React.Component
的类/构造函数,而不是
React.Component
的实例

因此,切换到以下选项可以修复错误:

interface IRDOMFacade extends React.ReactDOM {
    (
        component: new (...args: any[]) => React.Component<any, any>, 
        properties?: Object, 
        children?: React.ReactElement<any>|Array<React.ReactElement<any>>
    ): React.ReactElement<any>
}
接口IRDOMFacade扩展了React.ReactDOM{ ( 组件:新建(…args:any[])=>React.component, 属性?:对象, 子元素?:React.ReactElement |数组 ):React.React元素 } 我将把这个打开几天,以防有人有更惯用的解决方案

r(Application)
interface IRDOMFacade extends React.ReactDOM {
    (
        component: new (...args: any[]) => React.Component<any, any>, 
        properties?: Object, 
        children?: React.ReactElement<any>|Array<React.ReactElement<any>>
    ): React.ReactElement<any>
}