我有一个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;