是否有 eslint 规则用于检测未使用的类属性?

问题描述 投票:0回答:2

我正在使用 Angular 项目,并且我的 ESLint 设置无法检测何时未使用私有类变量,例如

@Component{...}
export class ExampleComponent {
  private exampleProperty: string
}

上面的私有属性 -

exampleProperty
在我当前的 ESLint 设置中不会突出显示。

我的

.eslintrc.json

{
  "root": true,
  "ignorePatterns": ["projects/**/*"],
  "overrides": [
    {
      "files": ["*.ts"],
      "parserOptions": {
        "project": ["tsconfig.json", "e2e/tsconfig.json"],
        "createDefaultProgram": true
      },
      "env": { "browser": true, "jest": true },
      "extends": [
        "eslint:recommended",
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates",
        "plugin:@typescript-eslint/recommended"
      ],
      "rules": {
        "@angular-eslint/component-selector": [
          "error",
          { "prefix": "app", "style": "kebab-case", "type": "element" }
        ],
        "@angular-eslint/no-host-metadata-property": "off",
        "@typescript-eslint/ban-ts-comment": "off",
        "@typescript-eslint/ban-types": "off",
        "@typescript-eslint/explicit-module-boundary-types": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "@typescript-eslint/no-unused-vars": [
          "error",
          { "argsIgnorePattern": "^_" }
        ],
        "no-case-declarations": "off",
        "no-console": ["error", { "allow": ["warn", "error"] }],
        "no-prototype-builtins": "off",
        "no-unused-vars": "off"
      }
    },
    {
      "files": ["*.html"],
      "extends": ["plugin:@angular-eslint/template/recommended"],
      "rules": {}
    }
  ]
}

我怎样才能让 linter 拾取这个?

angular typescript eslint typescript-eslint
2个回答
4
投票

您可以通过打开 noUnusedLocals 中的

tsconfig.json
选项,让
TypeScript
为您选择此选项。 (“Locals”显然包括未使用的私有属性,这些属性毕竟是类的本地属性。)

这是一个游乐场,该类打开了该选项,这给出了错误:

“exampleProperty”已声明,但其值从未被读取。(6133)

(我添加了一个构造函数并设置了属性,这样错误就不会与未初始化的错误混合/掩盖。)


0
投票

如果您使用真正的

#
私有类字段,核心 ESLint 规则
no-unused-private-class-members
将检测未使用的字段。

对于 TypeScript

private
类型隐私,目前没有这样的规则😔。但是有一个 open typescript-eslint 问题来增强
no-unused-private-class members
接受 PR。意思是:如果你能正确编码,它就会被 typescript-eslint 接受。

© www.soinside.com 2019 - 2024. All rights reserved.