小编nic*_*ice的帖子

键入 React HOC 的正确方法是什么?

我试图弄清楚我是否正确输入了我的反应高阶组件。在大多数情况下,这是正常工作的,但是在将 React 引用应用于 HOC 的实例时,我遇到了打字问题。下面是一个简化的再现:

import * as React from "react";

// Is returning a React.ComponentClass correct here?
function HOC(): (Component: React.ComponentType) => React.ComponentClass {
    return function(Component: React.ComponentType): React.ComponentClass {
        return class Bar extends React.Component {}
    }
}

class Foo extends React.Component<{},{}> {}
const Bar = HOC()(Foo);

class Test extends React.Component {
    private ref: React.RefObject<typeof Bar> = React.createRef<typeof Bar>();

    render(): any {
        return (
            <React.Fragment>
              <Bar
                ref={this.ref} // error here
              />
            </React.Fragment>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我也在这里捕获了这个问题:https : //stackblitz.com/edit/react-ts-rtmfwr

我得到的错误是: …

types higher-order-functions typescript reactjs higher-order-components

1
推荐指数
1
解决办法
690
查看次数