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?
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é.
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.
ignore-properties
à son tableautslint docs pertinents https://palantir.github.io/tslint/rules/no-inferrable-types/
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
C'est inutile, cela ne fournit aucune nouvelle information. Il s’agit essentiellement d’un commentaire disant "10 est un nombre".
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.
Cela pourrait être vu comme du bruit. Il est plus important de taper les parties non triviales