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

为什么@typescript-eslint/no-redeclare规则会出现重声明误报?

问题结论

这是旧版本@typescript-eslint的已知bug,不属于预期行为。


具体原因
  1. 你的代码本身符合语法规范:if块属于独立块级作用域,块内用const声明的result和外层作用域的result分属不同作用域,不存在重复声明问题,TypeScript原生编译也不会抛出同类错误。
  2. 报错触发的核心原因是你使用的@typescript-eslint v4.x版本和ecmaVersion: "latest"配置存在兼容性缺陷:
    • 你使用的ESLint 7.x版本中,ecmaVersion: "latest"会被解析为ES2021规范,而@typescript-eslint v4.x的作用域分析逻辑在高版本ECMAScript配置下存在漏洞,无法正确识别块级作用域的变量边界,误将不同作用域的同名变量判定为重复声明。
    • 当你移除ecmaVersion: "latest"配置时,@typescript-eslint/parser会默认使用适配TypeScript的低版本ECMAScript解析规则,刚好规避了这个作用域分析bug,因此报错消失。

修复方案
  • 优先升级@typescript-eslint/eslint-plugin和@typescript-eslint/parser到v5及以上版本,该bug在后续迭代中已经被修复,升级后即使保留ecmaVersion: "latest"配置也不会出现误报。
  • 如果暂时无法升级依赖,可以删除显式的ecmaVersion配置,或者将ecmaVersion设置为2020及更低版本,也可以临时规避该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:09:03