路由器typescript反应的静态类函数访问问题



我有一个react组件,根据路由道具的更改,我正在执行一些操作。我在类中有一个静态函数,但typescript没有得到类属性。

我正在将组件导出为withRouter(MyComponent),并且我想访问组件MyComponent.myStaticMethod()的静态属性。

我该如何使用合适的打字方式呢。我严格遵循typescript,所以我不想使用类型any。下面是一个示例代码。

class MyComponent extends React.Component<RouteComponentProps>{
public static myStaticMethod():void{
console.log("myStaticMethod called");
}
public render(): JSX.Element {
return // something;
}
// some other life cycle methods with required logic
}
export default withRouter(MyComponent);

但当我试图访问静态方法MyComponent.myStaticMethod()时,它给出了一个错误

Property 'myStaticMethod' does not exist on type 'ComponentClass<Pick<RouteComponentProps<{}, StaticContext, any>, never>, any>'.

它适用于任何类型((MyComponent as any).myStaticMethod()(,但我不想使用any

也许不优雅,但我通过重铸修复了这个问题:

export default withRouter(MyComponent) as unknown as typeof MyComponent;

最新更新