tslint wie man den Fehler deaktiviert "someVariable wird deklariert, aber sein Wert wird nie gelesen"


82

Ich benutze tslint und habe den Fehler erhalten.

'myVariable' is declared but its value is never read.

Ich ging zu der Website, die die Regeln https://palantir.github.io/tslint/rules/ dokumentiert, und suchte nach der Zeichenfolge is declared but its value is never read, fand diesen Text jedoch nicht. Ich kann und habe zwar nach Einstellungen gesucht, die möglicherweise mit diesem Fehler zusammenhängen, aber es sollte kein Ratespiel sein.

Welche Konfigurationsänderung ist erforderlich, um diesen Fehler zu unterdrücken / zu stoppen?

Genauso wichtig ist es, wenn ich in tslint einen Fehler erhalte, der besagt, dass "dies passiert ist", wie kann ich herausfinden, welche Einstellung zum Konfigurieren oder Ändern des tslint-Verhaltens zur Behandlung dieses Fehlers verwendet wird?

Ich habe auch eine Suche auf der Website durchgeführt (Google-Suche, die ich verwendet habe, war)

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

Ein direkter Treffer wurde jedoch nicht angezeigt. Die Antwort befindet sich möglicherweise auf der Website palantir.github.io, aber ich habe sie (noch) nicht gefunden.

Wie finden andere die tslint-Variablen- / Konfigurationseinstellungen, die sich ändern, um einen bestimmten Fehler zu unterdrücken?

Bitte schlagen Sie nicht vor, den Code zu kommentieren, der das Problem verursacht. Ich suche eine Antwort auf meine allgemeinere Frage sowie auf die spezifische Frage. Vielen Dank.


3
Haben Sie versucht noUnusedLocals, falsein Ihrem zu setzen compilerOptions? Empfohlen von diesem Beitrag: github.com/Microsoft/TypeScript/issues/…
Rickjerrity

1
"noUnusedLocals": false, + "noUnusedParameters": false, hat für mich gearbeitet
Gregor

Diese Regel ist, als müsste man mit einem Ferrari
Alvin Konda

2
als ob Sie einen Ferrari mit einem Haufen loser / unbenutzter Teile im Motor haben
möchten

Antworten:


65

Jeder Parametername, der mit _ beginnt, ist von der Prüfung ausgenommen. Verwenden_myVariable statt myvariable, um diese Warnung zu entfernen.


11
Es geschieht nicht automatisch, Sie müssen das Ignoriermuster angeben. "no-unused-variable": [true, {"ignore-pattern": "^_"}] Aber ja, das ist eine gute Lösung.
Soumya Kanti

1
Ich musste dieses Muster nicht spezifizieren, arbeitete sofort für mich
JP Lew

4
Als Update "no-unused-variable"ist seit TypeScript 2.9 github.com/palantir/tslint/issues/4046
Adi Fatol

Da tslint veraltet ist, sollten Sie stattdessen eslint und typescript-eslint verwenden. Die Verwendung von _ umgeht diese Regel nicht automatisch, erfordert jedoch eine Konfiguration, wie Rachit sagte. eslint.org/docs/rules/no-unused-vars . Die Verwendung von _ umgeht den TS-Compiler weiterhin automatisch.
Thad Peiffer

Die derzeit bevorzugte Methode, dies zu implementieren (nach meinem besten Wissen), ist in Ihrer .eslintrc.jsDatei: `'@ typescript-eslint / no-unused-vars': ['error', {'argsIgnorePattern': '^ _'} ], `verwenden, argsIgnorePatternwenn auf Argumente in so etwas wie einem Dekorator verwiesen wird und / oder varsIgnorePatterndeklarierte Variablen ignoriert werden.
Eric_WVGG

38

Erste Frage:

Bearbeiten Sie die Datei: tsconfig.json und fügen Sie den Schlüssel " noUnusedLocals " hinzu / ändern Sie ihn : false .

Sie müssen den Server neu starten.

Zweite Frage:

Wenn es sich um einen tslint-Fehler handelt; VS-Code zeigt in der Fehlermeldung die angewendete Regel an.

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

Die Prefer-Const- Regel in diesem Fall.


2
Oder Sie können anscheinend Variablen deklarieren, die Sie nur in der Vorlage verwenden,protected anstatt die Suche nach nicht verwendeten Einheimischen zu deaktivieren.
Ruffin

37

Fügen Sie diese Zeile kurz vor der Zeile hinzu, die den Fehler verursacht:

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

Sie erhalten keine tslint-Fehlermeldung mehr.

Dies ist eine bessere Lösung, als den Fehler für Ihre gesamte Codebasis in tslint.conf zu deaktivieren, da dann keine Variablen abgefangen werden, die wirklich nicht verwendet werden.


18

Zuerst noUnusedLocalsin tsconfig.json ausschalten:

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

Dann korrigieren Sie die Eslint-Regeln in .eslintrc.js:

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

Und wenn die Verwendung der @typescript-eslint/naming-conventionRegel hinzugefügt werden sollte leadingUnderscore: 'allow', Zum Beispiel, wenn Sie die Airbnb-Konfiguration verwenden:

'@typescript-eslint/naming-convention': [
  'error',
  {
    selector: 'variable',
    format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
    leadingUnderscore: 'allow',
  },
  {
    selector: 'function',
    format: ['camelCase', 'PascalCase'],
  },
  {
    selector: 'typeLike',
    format: ['PascalCase'],
  },
],

3

Ich benutze typescript": "2.9.1"mit tslint": "^5.10.0.

Ich bekam Tonnen von Fehlern wie

Property 'logger' is declared but its value is never read.

Außerdem stellte ich fest, dass ich beim Laufen eine Warnung erhielt ng-lint

$> ng lint
no-unused-variable is deprecated. Since TypeScript 2.9. Please use the built-in compiler checks instead.

Also habe ich die no-unused-variableRegel aus t entfernt tslint.json- und das scheint das Problem für mich zu lösen.


2

Es gibt zwei Arten von Variablen, und Sie können dies auf zwei Arten tun

  1. argsIgnorePattern
  2. varsIgnorePattern

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

Diese beiden Regeln in eslint ignorieren alle Funktionsargumente und Variablen, die mit dem Vorzeichen _ beginnen


0

Erweitern Sie die Datei tsconfig.json mit dev.tsconfig.json

Führen Sie den Befehl tsc -p ./dev.tsconfig.json aus

Dadurch werden die nicht verwendete Variable und der nicht verwendete Parameter in der Entwicklung deaktiviert

In dev.tsconfig.json:

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

-4

Eine andere Möglichkeit, dies zu vermeiden, besteht darin, für jede Variable, die Sie haben, eine get-Methode zu erstellen, wie folgt:

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

6
Dies fügt möglicherweise unnötigen Code hinzu, um eine Linter-Warnung zu beheben. Es ist viel besser, den Linter nach Ihren Wünschen zu konfigurieren, als nicht verwendeten Code hinzuzufügen.
Enmanuel Rivera

Dies ist kein unnötiger Code, wenn Sie mit Klassen mit privaten Eigenschaften arbeiten.
Jorgé Reyniers
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.