You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-router-dom+TypeScript使用withRouter报ts(2742)类型标注错误如何解决

报错原因

ts(2742)报错的根源是TypeScript无法自动推断withRouter高阶组件返回值的可移植类型,需要手动为导出的包裹后组件添加类型标注。

具体解决步骤

仅需要修改代码的导出部分即可,提供两种可选方案:

  • 方案1:快速修复,直接添加强类型断言
    将原最后一行的导出代码修改为:
export default withRouter(ClassComponent) as React.ComponentType;
  • 方案2:严谨类型定义,适配带自定义props的场景
    如果你的组件有需要外部传入的自定义属性,可以单独定义对外暴露的props类型,示例如下:
// 假设你有自定义props:type CustomProps = { title?: string }
// 这里没有自定义props就填空对象类型
type ExternalProps = {}

// 断言时指定对外暴露的props类型,使用组件时TS会自动校验传入的参数
const WrappedComponent = withRouter(ClassComponent) as React.ComponentType<ExternalProps>
export default WrappedComponent
补充说明

如果修改后仍报错,可以检查项目依赖中@types/react、@types/react-router-dom的版本兼容性,版本差异过大也可能触发类型推断异常。

内容的提问来源于stack exchange,提问作者user13118494

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:24:05