tslint如何禁用错误“声明了someVariable但从未读取其值”


82

我正在使用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行为以处理该错误的设置?

我也在网站上进行了搜索(我曾经使用过Google搜索)

site:palantir.github.io  is declared but its value is never read 

但是没有出现直接点击,因此答案可能在palantir.github.io网站上,但我还没有找到。

其他人如何找到为抑制特定错误而更改的tslint变量/配置设置?

请不要建议我注释掉导致问题的代码。我正在寻找针对我的一般性问题以及特定问题的答案。谢谢。


3
您是否尝试设置noUnusedLocalsfalse你的compilerOptions?由这篇文章推荐:github.com/Microsoft/TypeScript/issues/…–
rickjerrity

1
“ noUnusedLocals”:假,+“ noUnusedParameters”:假,为我工作
Gregor

这条规则就像必须以20英里/小时的速度驾驶法拉利
Alvin Konda

2
就像您想在引擎
中装

Answers:


65

以_开头的任何参数名称均不受检查。使用_myVariable代替myvariable消除此警告。


11
它不会自动发生,您必须指定忽略模式。 "no-unused-variable": [true, {"ignore-pattern": "^_"}] 但是,是的,这是一个很好的解决方案。
Soumya Kanti

1
我没有指定模式,为我工作的时候了
JP卢

4
作为更新,"no-unused-variable"自TypeScript 2.9
Adi Fatol '19

值得注意的是,由于tslint已被弃用,因此您应该改用eslint和typescript-eslint。使用_不会自动绕过该规则no-unused-vars,但是需要像Rachit所说的配置。 eslint.org/docs/rules/no-unused-vars。仍然使用_会自动绕过TS编译器。
Thad Peiffer

据我所知,当前实现此目的的首选方法是在您的.eslintrc.js文件中:`'@ typescript-eslint / no-unused-vars':['error',{'argsIgnorePattern':'^ _'} ]`,argsIgnorePattern如果在诸如装饰器之类的参数中引用参数,和/或varsIgnorePattern忽略声明的变量。
Eric_WVGG

39

拳头问题:

编辑文件:tsconfig.json,添加/修改键“ noUnusedLocals ”:false

您需要重新启动服务器。

第二个问题:

如果是tslint错误;VS Code在错误消息中显示已应用的规则

Identifier 'doc' is never reassigned; use 'const' instead of 'let'. (prefer-const)

在这种情况下,prefer-const规则。


2
或者,您显然可以声明仅在模板中使用的变量,protected而不是关闭对任何未使用的局部变量的检查。
松饼

37

在导致错误的行之前添加此行:

  /* tslint:disable:no-unused-variable */

您将不再收到tslint错误消息。

与在tslint.conf中为整个代码库关闭错误相比,这是一个更好的解决方案,因为这样一来,它就不会捕获真正未使用的变量。


18

首先noUnusedLocals在tsconfig.json中关闭:

{
  "compilerOptions": {
    "noUnusedLocals": false,
  }
}

然后在中修复eslint规则.eslintrc.js

module.exports = {
  rules: {
    'no-unused-vars': ['warn', { 'varsIgnorePattern': '^_' }],
    '@typescript-eslint/no-unused-vars': ['warn', { 'varsIgnorePattern': '^_' }],
  },
};

并且如果使用 @typescript-eslint/naming-conventionrule应该添加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'],
  },
],

3

我使用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.

因此,我删除了no-unused-variable规则tslint.json-这似乎为我解决了问题。


2

有两种类型的变量,您可以通过两种方式进行操作

  1. argsIgnorePattern
  2. varsIgnorePattern

    • no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]
    • no-unused-vars: ["error", { "varsIgnorePattern": "^_" }]

eslint中的这两个规则将忽略分别以_符号开头的任何函数参数和变量


0

用dev.tsconfig.json扩展tsconfig.json

并运行命令tsc -p ./dev.tsconfig.json

这将在开发中定义未使用的变量和未使用的参数

在dev.tsconfig.json内部:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "noUnusedLocals": false,
    "noUnusedParameters": false,
   }
}

-4

避免这种情况的另一种方法是为您拥有的每个变量创建一个get方法,如下所示:

get variablename():variabletype{return this.variablename;}

6
这会添加潜在不必要的代码来修复短绒警告。实际按照自己的喜好配置lint比添加未使用的代码要好得多。
Enmanuel Rivera

如果您使用具有私有属性的类,那么这不是不必要的代码。
豪尔赫Reyniers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.