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
相关产品推荐
相关产品推荐

