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

为何TypeScript代码检查要用eslint+typescript-eslint而非tsc?

TypeScript代码检查:typescript-eslint并非毫无作用,不该移除

别着急移除typescript-eslint,它和tsc是各司其职的关系,完全没法互相替代:

核心职责差异

  • tsc是TypeScript官方编译器,主打类型系统校验,比如你提到的const apple: pink = 'apple'里pink未定义的错误,属于类型范畴,这是tsc的本职工作。
  • typescript-eslint是ESLint的TypeScript适配层,核心作用是让ESLint能正确解析TS语法,同时提供TS专属的代码质量/风格规则,它不负责类型校验——这本来就不是它的活。

typescript-eslint的实际作用

它能帮你做很多tsc管不到的事:

  • 检查JS/TS通用的不良代码模式:比如未使用的变量(比tsc的noUnusedLocals更灵活,可配置忽略规则)、不必要的分号、变量声明不规范等。
  • 提供TS专属的代码规则:比如@typescript-eslint/no-explicit-any(禁止随便用any)、@typescript-eslint/prefer-const-enum(优先用const enum)、@typescript-eslint/no-empty-interface(禁止空接口)等,这些规则能帮你写出更规范的TS代码,但tsc不会管。
  • 让ESLint正确识别TS语法:如果移除它,ESLint会把TS代码当JS解析,遇到类型注解、接口这类TS语法,大概率会报语法错误——你之前测试“移除后仍能运行”只是刚好代码足够简单而已。

正确的严格检查方案

两者配合才是最优解:

  • 用tsc --noEmit --strict做严格类型校验,确保类型安全。
  • 用ESLint + typescript-eslint做代码风格和质量校验,推荐启用eslint:recommended + @typescript-eslint/recommended + @typescript-eslint/strict-type-checked规则集,覆盖更多TS专属的代码问题。

所以说,typescript-eslint在代码检查里是必不可少的,完全不该移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:05:00