我正在使用 tslint,并得到了错误。
'myVariable' is declared but its value is never read.
我访问了记录规则 https://palantir.github.io/tslint/rules/ 的网站并搜索了字符串 is declared but its value is never read
,但没有找到该文本。虽然我可以并且确实寻找可能与此错误相关的设置,但它不应该是一个猜谜游戏。
抑制/停止此错误所需的配置更改是什么?
同样重要的是,当我在 tslint 中收到“发生这种情况”的错误时,我如何才能找到用于配置或更改如何处理该错误的 tslint 行为的设置?
我也在网站上进行了搜索(我使用的谷歌搜索是)
site:palantir.github.io is declared but its value is never read
但是没有出现直接命中,所以答案可能在 palantir.github.io 网站上,但我只是没有(还)找到它。
其他人如何找到更改以抑制特定错误的 tslint 变量/配置设置?
请不要建议我注释掉导致问题的代码。我正在寻找我的更一般问题以及具体问题的答案。谢谢你。
任何以 _
开头的参数名称都免于检查。使用 _myVariable
而不是 myvariable
删除此警告。
拳头问题:
编辑文件:tsconfig.json,添加/修改键 "noUnusedLocals": false
。
您需要重新启动服务器。
第二个问题:
如果是 tslint 错误; VS Code 在错误消息中显示已应用的规则。
标识符“doc”永远不会重新分配;使用“常量”而不是“让”。 (首选常量)
本例中的 prefer-const
规则。
protected
而不是关闭检查任何未使用的本地人。
在导致错误的行之前添加此行:
/* tslint:disable:no-unused-variable */
您将不再收到 tslint 错误消息。
这是一个比在 tslint.conf 中为整个代码库关闭错误更好的解决方案,因为这样它就不会捕获真正未使用的变量。
新解决方案
首先,关闭 tsconfig.json 中的 noUnusedLocals
:
{
"compilerOptions": {
"noUnusedLocals": false,
}
}
然后修复 .eslintrc.js
中的 eslint 规则:
module.exports = {
rules: {
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error', { 'varsIgnorePattern': '^_', "argsIgnorePattern": "^_" }],
},
};
并且如果使用 @typescript-eslint/naming-convention
规则应添加 leadingUnderscore: 'allow'
,例如,如果您使用的是 Airbnb 配置:
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'variable',
format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
leadingUnderscore: 'allow',
},
{
selector: 'function',
format: ['camelCase', 'PascalCase'],
},
{
selector: 'typeLike',
format: ['PascalCase'],
},
],
注意:您应该手动将 package.json 中的所有相关 eslint
包更新到最新版本。
使用 dev.tsconfig.json 扩展 tsconfig.json
并运行命令 tsc -p ./dev.tsconfig.json
这将禁用开发中未使用的变量和未使用的参数
在 dev.tsconfig.json 内部:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noUnusedLocals": false,
"noUnusedParameters": false,
}
}
我将 typescript": "2.9.1"
与 tslint": "^5.10.0
一起使用。
我遇到了很多错误,例如
Property 'logger' is declared but its value is never read.
此外,我观察到运行 ng-lint
时收到警告
$> ng lint
no-unused-variable is deprecated. Since TypeScript 2.9. Please use the built-in compiler checks instead.
因此,我从 tslint.json
中删除了 no-unused-variable
规则 - 这似乎解决了我的问题。
有两种类型的变量,您可以通过两种方式进行操作
argsIgnorePattern varsIgnorePattern no-unused-vars: ["error", { "argsIgnorePattern": "^_" }] no-unused-vars: ["error", { "varsIgnorePattern": "^_" }]
eslint 中的这两条规则将分别忽略任何以 _ 符号开头的函数参数和变量
我在这个网站上看到了一个解决方案:https://phpenthusiast.com/blog/angular-form-ngform-and-two-ways-data-binding。
它帮助了我,但只有 50%
这是我修改后的代码:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';// i added this line and one more line.
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { DheerajComponent } from './dheeraj/dheeraj.component'
@NgModule({
declarations: [
AppComponent,
DheerajComponent
],
imports: [
BrowserModule,
AppRoutingModule,
FormsModule, // this one. remaining all default code
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
如果您有这样的事情,请做出反应
export default class Body extends Component {
let data = null; // somethings like this line
// ...
// ...
将其转换为
export default class Body extends Component {
data = null; // somethings like this line
// ...
// ...
let
或 const
或 var
如果有人需要暂时禁用它,那么在开发时,最好的方法可能是运行带有附加命令行标志的 tsc
编译器:
$npx tsc -w --noUnusedLocals false --noUnusedParameters false
避免这种情况的另一种方法是为您拥有的每个变量创建一个 get 方法,如下所示:
get variablename():variabletype{return this.variablename;}
"no-unused-variable": [true, {"ignore-pattern": "^_"}]
但是,是的,这是一个很好的解决方案。"no-unused-variable"
.eslintrc.js
文件中:` '@typescript-eslint/no-unused-vars': ['error', { 'argsIgnorePattern': '^ _' }],` 如果引用装饰器之类的参数,请使用argsIgnorePattern
,和/或varsIgnorePattern
忽略已声明的变量。