我想在我的全新项目中使用 typescript 但是我很难输入 HOC 组件
const withClass = (Wrapped: Component<any, {}, any>, className: string) => {
return props => (
<div className={className}>
<Wrapped />
</div>
);
};
它不适用于此错误
类型错误:“typeof App”类型的参数不可分配给“组件”类型的参数。 “typeof App”类型缺少“Component”类型的以下属性:context、setState、forceUpdate、render 和另外 3 个。 TS2345
那么正确的方法是什么?
最佳答案
Component<...>
type 指定 React.Component
的实例.
如果打算提供一个组件本身并且不将 HOC 限制为类组件,那么正确的类型是 ComponentType
:
const withClass = (Wrapped: React.ComponentType<any>, className: string) => { ... }
最好使用特定的 Prop 类型而不是any
.如果应该像 HOC 所期望的那样将 props 传递给包装的组件,this issue也应该解决:
const withClass = <P extends {}>(Wrapped: React.ComponentType<P>, className: string) => {
return props => (
<div className={className}>
<Wrapped {...props as P} />
</div>
);
};
关于reactjs - react typescript 如何键入一个 hoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726063/