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

React项目中window.location.href赋值触发TS2540只读属性报错求助

解决TS2540: Cannot assign to 'href' because it is a read-only property错误

以下是几种可行的解决方法:

  • 检查TypeScript配置的lib项
    确保你的tsconfig.json中compilerOptions.lib数组包含"dom",因为window.location的类型定义依赖DOM库。配置示例:

    {
      "compilerOptions": {
        "lib": ["dom", "es2015"]
        // 其他配置项...
      }
    }
    

    未引入DOM库时,TypeScript会使用默认基础类型定义,可能错误将href标记为只读。

  • 使用规范的跳转方法替代直接赋值
    改用window.location.assign()方法实现页面跳转,这是更符合标准的做法,同时不会触发类型错误:

    handleEdit(): void {
        window.location.assign(`/edit/${this.props.entry.id}`);
    }
    
  • 显式类型断言(不推荐,仅作临时方案)
    如果上述方法无效,可通过类型断言绕过TypeScript检查,但会失去类型校验的优势:

    handleEdit(): void {
        (window.location as any).href = `/edit/${this.props.entry.id}`;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:02