必须彻底卸载TSLint插件与依赖、删除所有tslint配置文件、显式配置@typescript-eslint/parser解析TypeScript文件,并关闭VSCode内置TS/JS校验,否则ESLint无法接管.ts文件,导致规则不生效、报错不提示、保存不修复。

VSCode 中 TSLint 已彻底弃用,任何残留配置都会阻断 ESLint 对 .ts 文件的接管——不卸载插件、不清配置、不关内置校验,你看到的报错就不是 ESLint 发的,保存也不会按你的规则修复。
卸载所有 TSLint 插件和依赖
VSCode 插件市场里搜 TSLint,把所有结果(尤其是 eg2.tslint)全部卸载,哪怕它显示“已启用”也得手动关掉。这不是可选项,是前提。
- 运行
npm ls tslint或yarn list tslint,确认无输出;若有,执行npm uninstall tslint --save-dev(或对应yarn remove) - 删掉项目根目录下的
tslint.json、tslint.yml或任何tslint.*配置文件 - 检查
package.json的devDependencies,确保没有tslint、tslint-config-*类条目
确保 ESLint 正确解析 TypeScript 文件
装了 @typescript-eslint/parser 不等于它就被用了——VSCode 默认不会自动把它配给 .ts 文件,必须显式声明。
-
.eslintrc.cjs(或eslint.config.js)中必须包含parser: '@typescript-eslint/parser' - 必须同时安装
@typescript-eslint/parser和@typescript-eslint/eslint-plugin,且版本匹配(v7+ 推荐) -
eslint.validate设置中必须显式包含"typescript"和"typescriptreact"(.tsx 文件需要) - 若用 Flat 配置(
eslint.config.mjs),需改用languageOptions.parserOptions.project替代旧的parserOptions.project
关闭 VSCode 内置 TS/JS 校验与遗留设置
VSCode 自带的 TypeScript 语言服务会和 ESLint 抢着标红,你看到的波浪线大概率来自它,而不是你刚配的规则。
- 在
settings.json中强制设为:"typescript.validate.enable": false和"javascript.validate.enable": false - 全局搜索
tslint.,禁用所有以它开头的设置项(如tslint.autoFixOnSave),它们已失效但仍在干扰启动 - 重启整个 VSCode 窗口(不是重载),否则旧语言服务进程仍驻留后台
验证 ESLint 是否真正接管 .ts 文件
最常被跳过的一步:VSCode 可能加载了 ESLint 插件,却没把当前打开的 .ts 文件交给它处理。
- 打开命令面板(
Ctrl+Shift+P),运行ESLint: Show Output Channel - 看日志是否出现
Using configuration from /path/to/your/.eslintrc.cjs,且路径正确 - 若提示
Failed to load parser '@typescript-eslint/parser',检查该包是否真在node_modules中,且parser字段写的是字符串'@typescript-eslint/parser',不是相对路径 - 临时在
.ts文件里加一行// eslint-disable-next-line @typescript-eslint/no-explicit-any,再删掉,看波浪线是否消失——这是最直接的接管验证
迁移真正的难点不在写配置,而在清理干净——TSLint 的残留像后台进程一样顽固,哪怕只漏掉一个 tslint.* 文件或一条 tslint. 设置,ESLint 就可能静默降级,你调的规则全白搭。


















