ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在使用 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 变量/配置设置?

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

您是否尝试在 compilerOptions 中将 noUnusedLocals 设置为 false ?此帖推荐:github.com/Microsoft/TypeScript/issues/…
“noUnusedLocals”:假,+“noUnusedParameters”:假,为我工作
这条规则就像必须以 20 英里/小时的速度驾驶法拉利
就好像您想拥有一辆法拉利,引擎中有一堆松散/未使用的零件:)

J
Jaroslav Bezděk

任何以 _ 开头的参数名称都免于检查。使用 _myVariable 而不是 myvariable 删除此警告。


它不会自动发生,您必须指定忽略模式。 "no-unused-variable": [true, {"ignore-pattern": "^_"}] 但是,是的,这是一个很好的解决方案。
我不必指定该模式,立即为我工作
作为更新,自 TypeScript 2.9 github.com/palantir/tslint/issues/4046 起已弃用 "no-unused-variable"
值得注意的是,由于 tslint 已被弃用,您应该改用 eslint 和 typescript-eslint。使用 _ 不会自动绕过该规则 no-unused-vars,但需要像 Rachit 所说的那样进行配置。 eslint.org/docs/rules/no-unused-vars。使用 _ 仍然会自动绕过 TS 编译器。
目前实现这一点的首选方法(据我所知)是,在您的 .eslintrc.js 文件中:` '@typescript-eslint/no-unused-vars': ['error', { 'argsIgnorePattern': '^ _' }],` 如果引用装饰器之类的参数,请使用 argsIgnorePattern,和/或 varsIgnorePattern 忽略已声明的变量。
L
Liam

拳头问题:

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

您需要重新启动服务器。

第二个问题:

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

标识符“doc”永远不会重新分配;使用“常量”而不是“让”。 (首选常量)

本例中的 prefer-const 规则。


或者您显然可以 declare variables you only use in the template protected 而不是关闭检查任何未使用的本地人。
e
edwin

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

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

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

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


M
Masih Jahangiri

新解决方案

首先,关闭 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 包更新到最新版本。


P
PatS

使用 dev.tsconfig.json 扩展 tsconfig.json

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

这将禁用开发中未使用的变量和未使用的参数

在 dev.tsconfig.json 内部:

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

谢谢,是 noUnusedParameters 把我搞砸了
W
Wand Maker

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


K
Kalana

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

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

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


I
IndieGameDev

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

N
Nima

如果您有这样的事情,请做出反应

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

    // ...
    // ...

只需删除 letconstvar
D
Dmitry Koroliov

如果有人需要暂时禁用它,那么在开发时,最好的方法可能是运行带有附加命令行标志的 tsc 编译器:

$npx tsc -w --noUnusedLocals false --noUnusedParameters false

J
Jorgé Reyniers

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

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

这会添加可能不必要的代码来修复 linter 警告。根据自己的喜好实际配置 linter 比添加未使用的代码要好得多。
如果您使用具有私有属性的类,这不是不必要的代码。