134 votes

Tslint comment désactiver l'erreur "someVariable est déclarée mais sa valeur n'est jamais lue"

Je me sers de tslint et j'ai eu l'erreur.

'maVariable' est déclarée mais sa valeur n'est jamais lue.

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

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

De manière tout aussi importante, lorsque j'obtiens une erreur dans tslint qui dit "ceci est arrivé", comment puis-je trouver quel paramètre est utilisé pour configurer ou modifier le comportement de tslint sur la façon de gérer cette erreur?

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

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

mais je n'ai pas obtenu de résultat direct, donc la réponse pourrait se trouver sur le site palantir.github.io mais je ne l'ai simplement pas encore trouvé.

Comment les autres trouvent-ils les variables/configurations tslint qui changent pour supprimer une erreur particulière?

Veuillez vous abstenir de suggérer que je commente le code qui pose problème. Je cherche une réponse à ma question plus générale ainsi qu'à la question spécifique. Merci.

7 votes

Avez-vous essayé de définir noUnusedLocals sur false dans vos compilerOptions ? Recommandé par ce post : github.com/Microsoft/TypeScript/issues/…

2 votes

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

1 votes

Cette règle est comme devoir conduire à 20 mph avec une Ferrari

127voto

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.

26 votes

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

3 votes

Je n'ai pas eu besoin de spécifier ce modèle, cela a fonctionné pour moi tout de suite

5 votes

En tant que mise à jour, "no-unused-variable" est obsolète depuis TypeScript 2.9 github.com/palantir/tslint/issues/4046

72voto

Roger Points 527

Première question :

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

Vous devrez redémarrer le serveur.

Deuxième question :

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

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

La règle prefer-const dans ce cas.

2 votes

Ou vous pouvez apparemment déclarer des variables que vous n'utilisez que dans le modèle protected plutôt que de désactiver la vérification pour les variables locales non utilisées.

43voto

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 de tslint.

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

5voto

Wand Maker Points 1598

Je suis en train d'utiliser 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 remarqué que je recevais un avertissement lors de l'exécution de ng-lint

$> ng lint
no-unused-variable est obsolète. Depuis TypeScript 2.9. Veuillez utiliser les vérifications intégrées du compilateur à la place.

J'ai donc supprimé la règle no-unused-variable du fichier tslint.json - et cela semble avoir résolu le problème pour moi.

-2voto

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 potentiellement du code inutile pour corriger un avertissement du linter. Il est beaucoup préférable de configurer réellement le linter à votre goût plutôt que d'ajouter du code inutilisé.

1 votes

Il n'y a pas de 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