tslint如何禁用错误“someVariable已声明,但其值永远不会被读取”

时间:2018-04-24 22:15:37

标签: tslint

我正在使用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行为的设置? < / p>

我也在网站上搜索过(我用过的谷歌搜索)

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

但没有出现直接命中,所以答案可能在palantir.github.io网站上,但我还没有(还)找到它。

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

请不要建议我注释掉导致问题的代码。我正在寻找一个更普遍的问题以及具体问题的答案。谢谢。

9 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:16)

首先在tsconfig.json中关闭noUnusedLocals

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

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

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

如果使用 @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'],
  },
],

答案 2 :(得分:15)

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

-- Sample table with a VARBINARY(MAX) column
CREATE TABLE tmp (id INT IDENTITY(1,1) PRIMARY KEY, col VARBINARY(MAX))

-- Insert sample data - 20 bytes per row.
;WITH cte AS 
(
    SELECT 1 AS rn, HASHBYTES('sha1', 'somerandomtext') t
    UNION all 
    SELECT rn + 1, HASHBYTES('sha1', 'somerandomtext')
    FROM cte
    WHERE rn< 5000  
)
INSERT INTO tmp (col)
SELECT t FROM cte
OPTION (maxrecursion 0)

-- @total_bytes is the desired size of the table after the delete statement
DECLARE @total_bytes int = 200

-- Use the SUM window function to get a running total of the DATALENGTH
-- of the VARBINARY field, and delete when the running total exceeds
-- the desired table size.
-- You can order the window function however you want to delete rows
-- in the correct sequence.
DELETE t
FROM tmp t
INNER JOIN
(
    SELECT id, SUM(DATALENGTH(col)) OVER (ORDER BY id) total_size
    FROM tmp
)sq ON t.id = sq.id AND sq.total_size > @total_bytes

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

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

答案 3 :(得分:11)

拳头问题:

编辑文件:tsconfig.json,添加/修改密钥&#34; noUnusedLocals &#34;: false

您需要重新启动服务器。

第二个问题:

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

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

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

答案 4 :(得分:2)

有两种类型的变量,您可以通过两种方式完成

  1. argsIgnorePattern
  2. varsIgnorePattern

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

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

答案 5 :(得分:1)

我将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规则-这似乎为我解决了这个问题。

答案 6 :(得分:1)

我在此网站上看到了一个解决方案: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 { 
}

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

用dev.tsconfig.json扩展tsconfig.json

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

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

在dev.tsconfig.json内部:

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