web-dev-qa-db-fra.com

Tslint - type déduit trivialement - Pourquoi est-ce une mauvaise pratique d'inclure le type ici?

Dans VSCode, linter, tslint, se plaint lorsque j'ajoute le code suivant, avec le type:

serverId: number = 10;

Et donne le message suivant:

[tslint] Numéro de type déduit trivialement à partir d'un littéral numérique, suppression de l'annotation de type (no-inferrable-types)

Lorsque je supprime le type 'numéro', le message disparaît.

Pourquoi est-ce une mauvaise pratique d'inclure les informations de type ici?

41
Tony Scialo

Ce n’est pas une mauvaise pratique, mais serverId: number = 10 est redondant, car number type est inféré quand une propriété est attribuée. C'est ce que TSLint no-inferrable-types met en garde sur:

Les types explicites où ils peuvent être facilement déduits par le compilateur rendent le code plus détaillé.

Sauf s'il est possible que la propriété serverId soit initialement non définie mais définie ultérieurement (par exemple, dans la fonction constructor,), number peut être omis en toute sécurité.

Cette approche fonctionne mieux avec l'option noImplicitAny , car il n'y a donc aucune chance qu'un type soit omis par erreur, car il n'a pas été inféré.

43
Estus Flask

Comme mentionné ci-dessus, il est techniquement redondant et peut être considéré comme un fouillis. Personnellement, je ne me soucie pas de cette opinion et préfère avoir à la fois le type et la valeur pour une variété de raisons spécifiques de flux de travail mineurs et je ne considère pas que cela soit le niveau d'encombrement qui justifie une règle. Si vous voulez le désactiver, voici comment.

  • ouvrir tslint.json
  • trouver l'attribut "no-inferrable-types"
  • ajouter ignore-properties à son tableau

tslint docs pertinents https://palantir.github.io/tslint/rules/no-inferrable-types/

21
Alex Spera

Cette erreur est due à votre configuration dans tslint.json fichier.

Soit simplement initier votre chaîne en tant que:

serverId = 10;

ou

serverId : number;

ou simplement définir votre configuration pour le no-inferrable-types dans votre fichier tslint.json en tant que:

no-inferrable-types : false
11
Pardeep Jain

C'est inutile, cela ne fournit aucune nouvelle information. Il s’agit essentiellement d’un commentaire disant "10 est un nombre".

2
Sulthan

Cela pourrait être bizarre de venir maintenant, mais je recevais l'erreur similaire et je ne pouvais pas trouver l'attribut "no-inferrable-types" dans le fichier tslint.json de mon angular app. Je ne sais pas pourquoi il n'a pas généré cela en premier lieu mais je devais l'insérer ici

"rules": {
    **"no-inferrable-types": false,**
    "directive-selector": [
      true,
      "attribute",
      "app",
      "camelCase"
    ],

Et puis ça a marché comme un charme!

P.S. Ceci est pour quelqu'un qui pourrait être errant avec le même problème que moi, ou je pourrais me tromper car personne dans aucune des solutions n'a mentionné que cela doit être ajouté de notre côté dans le fichier json.

2
Akshay Kumar

Cela pourrait être vu comme du bruit. Il est plus important de taper les parties non triviales

1
Julian