typescript 仅负责类型校验,eslint 才执行代码规范检查;二者需通过 @typescript-eslint/parser 和 @typescript-eslint/eslint-plugin 配合,并启用类型感知规则(如配置 project、strict 选项及 recommended-type-checked 预设)才能实现严格规范验证。

TypeScript 本身不负责代码风格或工程规范检查,它只做类型校验;ESLint 才是执行代码规范(如命名、缩进、禁用 var、禁止 any 等)的核心工具。两者配合的关键在于:用 @typescript-eslint/parser 让 ESLint 能“看懂” TypeScript 语法,再通过 @typescript-eslint/eslint-plugin 提供专为 TS 设计的规则,最后结合类型检查能力实现真正严格的规范验证。
启用类型感知的规则检查
普通 ESLint 规则无法访问 TypeScript 的类型信息(比如某个变量是不是 string 类型)。要让规则“知道类型”,必须开启类型检查支持:
- 在
parserOptions中指定project字段,指向你的tsconfig.json - 使用
recommended-type-checked或strict-type-checked这类预设配置,它们包含依赖类型信息的规则(如@typescript-eslint/no-unsafe-call、@typescript-eslint/restrict-template-expressions) - 确保
tsconfig.json中启用了"noImplicitAny": true、"strict": true等严格选项,否则类型检查会失效
选择合适的预设配置组合
不同严格程度对应不同配置层级,不能只靠 recommended 达到“严格”效果:
-
基础正确性:用
plugin:@typescript-eslint/recommended—— 检查语法错误、常见反模式,但不依赖类型 -
类型感知增强:叠加
plugin:@typescript-eslint/recommended-type-checked—— 增加对类型安全的约束(如禁止any在泛型位置、限制模板字符串中非字符串类型) -
工程级严格:再叠加
plugin:@typescript-eslint/strict或stylistic—— 启用命名规范(PascalCase 类型名)、导入顺序、显式返回类型等细节规则
关键配置项不能遗漏
即使选了预设,以下几项若缺失,严格检查就会降级或报错:
-
parser: '@typescript-eslint/parser'—— 必须声明,否则 ESLint 会用 JS 解析器报错 -
plugins: ['@typescript-eslint']—— 否则插件规则无法加载 -
parserOptions.project—— 启用类型检查的开关,路径需准确(如./tsconfig.json) -
ignorePatterns或.eslintignore—— 排除node_modules、dist、build,避免误检和性能问题
与编辑器和 CI 流程集成
仅本地运行命令不够,“严格”需要贯穿开发全流程:
- VS Code 中启用 ESLint 插件,并设置
"editor.codeActionsOnSave": {"source.fixAll.eslint": true},保存时自动修复可修复项 - 在
package.json中定义脚本:"lint": "eslint . --ext .ts,.tsx --fix",并加入 pre-commit hook(如 via husky) - CI 流程(如 GitHub Actions)中执行
npm run lint和npx tsc --noEmit双重保障:ESLint 检规范,tsc 检类型











