@typescript-eslint/no-unused-vars规则不生效,如何检测未使用类成员?
解决Angular中ESLint未检测到未使用类成员的问题
问题描述
在Angular项目中,已在.eslintrc.json中启用no-unused-vars和@typescript-eslint/no-unused-vars规则并设为error级别,但组件中的something变量与somethingFn()方法未被使用时,ESLint并未标记。其他规则(如@typescript-eslint/explicit-member-accessibility)可正常工作。
解决方案
1. 禁用原生ESLint的no-unused-vars规则
TypeScript项目应使用@typescript-eslint/no-unused-vars替代原生规则,避免规则冲突,将原生规则设为off。
2. 配置@typescript-eslint/no-unused-vars检测类成员
该规则默认不会全面检查类的属性和方法,需添加配置项明确开启类成员检测,还可设置忽略前缀(比如下划线开头的变量,方便临时保留未使用成员)。
3. 启用TypeScript类型检查支持
@typescript-eslint/no-unused-vars检测类成员依赖TypeScript的类型信息,因此需在ESLint配置中指定parserOptions.project指向项目的tsconfig.json。
修改后的.eslintrc.json关键部分
{ "root": true, "ignorePatterns": ["projects/**/*"], "overrides": [ { "files": ["*.ts"], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@angular-eslint/recommended", "plugin:@angular-eslint/template/process-inline-templates", "plugin:prettier/recommended" ], "parserOptions": { "project": "./tsconfig.json" }, "rules": { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": true, "varsIgnorePattern": "^_", "argsIgnorePattern": "^_", "caughtErrors": "none", "memberOptions": { "unused": "all" } } ], "@typescript-eslint/explicit-member-accessibility": "error", "@angular-eslint/directive-selector": [ "error", { "type": "attribute", "prefix": "app", "style": "camelCase" } ], "@angular-eslint/component-selector": [ "error", { "type": "element", "prefix": "app", "style": "kebab-case" } ] } }, // 其他HTML相关配置保持不变 ] }
关键配置说明
parserOptions.project:让ESLint借助TypeScript的类型检查能力,准确识别类成员是否在模板或其他场景中被使用。memberOptions.unused: "all":强制检查所有未使用的类成员,包括属性、方法等。varsIgnorePattern/argsIgnorePattern:可选配置,忽略下划线开头的变量或参数,适用于临时保留但暂未使用的成员。
内容的提问来源于stack exchange,提问作者Peter Boomsma
相关产品推荐
相关产品推荐

