我正在使用 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 拾取这个?
您可以通过打开 noUnusedLocals
中的
tsconfig.json
选项,让 TypeScript为您选择此选项。 (“Locals”显然包括未使用的私有属性,这些属性毕竟是类的本地属性。)
这是一个游乐场,该类打开了该选项,这给出了错误:
“exampleProperty”已声明,但其值从未被读取。(6133)
(我添加了一个构造函数并设置了属性,这样错误就不会与未初始化的错误混合/掩盖。)
如果您使用真正的
#
私有类字段,核心 ESLint 规则 no-unused-private-class-members
将检测未使用的字段。
对于 TypeScript
private
类型隐私,目前没有这样的规则😔。但是有一个 open typescript-eslint 问题来增强 no-unused-private-class members
接受 PR。意思是:如果你能正确编码,它就会被 typescript-eslint 接受。