105 votes

tslint comment désactiver l'erreur "someVariable is declared but its value is never read" (une variable est déclarée mais sa valeur n'est jamais lue)

J'utilise tslint, et j'ai obtenu l'erreur.

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

Je suis allé sur le site web qui documente les règles https://palantir.github.io/tslint/rules/ et a cherché la chaîne de caractères is declared but its value is never read mais je n'ai pas trouvé ce texte. Je peux rechercher et j'ai recherché les paramètres qui pourraient être liés à cette erreur, mais cela ne devrait pas être un jeu de devinettes.

Quel est le changement de configuration nécessaire pour supprimer/arrêter cette erreur ?

Tout aussi important, quand je reçois une erreur dans tslint qui dit "ceci est arrivé" comment puis-je trouver quel paramètre est utilisé pour configurer ou changer le comportement de tslint sur la façon de gérer cette erreur ?

J'ai également fait une recherche sur le site web (la recherche google que j'ai utilisée était)

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

mais aucun résultat direct n'est apparu, donc la réponse se trouve peut-être sur le site palantir.github.io mais je ne l'ai pas (encore) trouvée.

Comment les autres trouvent-ils la variable tslint/les paramètres de configuration qui changent pour supprimer une erreur particulière ?

Veuillez vous abstenir de me suggérer de commenter le code à l'origine du problème. Je cherche une réponse à ma question plus générale ainsi qu'à la question spécifique. Je vous remercie.

5 votes

Avez-vous essayé de régler noUnusedLocals à false dans votre compilerOptions ? Recommandé par ce post : github.com/Microsoft/TypeScript/issues/

2 votes

"noUnusedLocals" : false, + "noUnusedParameters" : false, cela a fonctionné pour moi.

0 votes

Cette règle, c'est comme devoir conduire à 30 km/h avec une Ferrari.

101voto

Rachit Rawat Points 532

Tout nom de paramètre commençant par _ est exempté de la vérification. Utilisez _myVariable au lieu de myvariable pour supprimer cet avertissement.

14 votes

Cela ne se fait pas automatiquement, vous devez spécifier le motif d'ignorance. "no-unused-variable": [true, {"ignore-pattern": "^_"}] Mais oui, c'est une bonne solution.

2 votes

Je n'ai pas eu à spécifier ce modèle, ça a marché pour moi tout de suite.

4 votes

En guise de mise à jour, "no-unused-variable" est déprécié depuis TypeScript 2.9 github.com/palantir/tslint/issues/4046

58voto

Roger Points 527

Première question :

Modifiez le fichier : tsconfig.json, en ajoutant/modifiant la clé "noUnusedLocals": false .

Vous devez redémarrer le serveur.

Deuxième question :

S'il s'agit d'une erreur tslint ; Code VS montre, dans le message d'erreur, le règle qui a été appliqué.

L'identificateur 'doc' n'est jamais réaffecté ; utilisez 'const' au lieu de 'let'. (prefer-const)

Le site prefer-const dans ce cas.

2 votes

Ou vous pouvez apparemment déclarer les variables que vous utilisez uniquement dans le modèle protected plutôt que de désactiver la vérification de tout local non utilisé.

45voto

edwin Points 1497

Ajoutez cette ligne juste avant la ligne qui provoque l'erreur :

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

Vous ne recevrez plus le message d'erreur tslint.

C'est une meilleure solution que de désactiver l'erreur pour l'ensemble de votre base de code dans tslint.conf, car cela n'attraperait pas les variables qui ne sont pas vraiment utilisées.

4voto

Wand Maker Points 1598

J'utilise typescript": "2.9.1" avec tslint": "^5.10.0 .

Je recevais des tonnes d'erreurs telles que

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

De plus, j'ai observé que j'obtenais un avertissement lors de l'exécution du programme ng-lint

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

Donc, j'ai enlevé le no-unused-variable la règle de lt tslint.json - et cela semble résoudre le problème pour moi.

-3voto

Jorgé Reyniers Points 57

Une autre façon d'éviter cela est de créer une méthode get pour chaque variable que vous avez, comme ceci :

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

6 votes

Cela ajoute du code potentiellement inutile pour corriger un avertissement de linter. Il vaut mieux configurer le linter à votre goût plutôt que d'ajouter du code inutilisé.

0 votes

Ce n'est pas un code inutile si vous travaillez avec des classes ayant des propriétés privées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X