Reactjs 什么';作为装饰器使用的TypeScript的正确返回类型是什么?
我正在尝试用TypeScript编写一个简单的HOC,但对返回类型应该是什么感到困惑。HOC的外观如下所示:Reactjs 什么';作为装饰器使用的TypeScript的正确返回类型是什么?,reactjs,typescript,higher-order-components,Reactjs,Typescript,Higher Order Components,我正在尝试用TypeScript编写一个简单的HOC,但对返回类型应该是什么感到困惑。HOC的外观如下所示: export const requiresUser = <P extends object>(Component: React.ComponentType<P>) => class RequiresUser extends React.Component<P> { componentDidMount() { console
export const requiresUser = <P extends object>(Component: React.ComponentType<P>) =>
class RequiresUser extends React.Component<P> {
componentDidMount() {
console.log("requires user")
}
render() {
return <Component {...this.props} />
}
}
所以我的问题是,HOC的返回类型应该是什么,以允许使用它来定义所需函数的组件?返回
any
可以让它工作,但感觉像是作弊。似乎typescript现在不支持decorator中的类型变异(因为修饰组件与原始组件不同)
解决办法:
export const requireuser=<
P
T扩展{new(props:P):React.Component}
>(
组成部分:T
):T=>{
类requireuser扩展React.Component
{
componentDidMount(){
console.log(“需要用户”);
}
render(){
返回;
}
}
将请求者返回为T;
};
@requiresUser
export class DashboardPage extends React.Component<{}> {
someFunction = () => {
console.log("hi")
}
render() {
return (
<div>
DashboardPage
</div>
)
}
}
(11, 1): Unable to resolve signature of class decorator when called as an expression.
Type 'typeof RequiresUser' is not assignable to type 'typeof DashboardPage'.
Type 'requiresUser<{}>.RequiresUser' is not assignable to type 'DashboardPage'.
Property 'someFunction' is missing in type 'requiresUser<{}>.RequiresUser'.