In VSCode beschwert sich der Linter tslint, wenn ich den folgenden Code mit dem Typ hinzufüge:
serverId: number = 10;
Und gibt die folgende Nachricht:
[tslint] Typennummer, die trivial aus einem Zahlenliteral abgeleitet wurde, entfernen Sie Typanmerkungen (nicht ableitbare Typen)
Wenn ich den Typ 'Nummer' entferne, verschwindet die Nachricht.
Warum ist es eine schlechte Praxis, die Typinformationen hier anzugeben?
angular
typescript
visual-studio-code
Tony Scialo
quelle
quelle
Antworten:
Es ist keine schlechte Praxis, sondern
serverId: number = 10
ist überflüssig, weilnumber
Typ wird geschlossen , wenn eine Eigenschaft zugeordnet ist. Dies ist, wovor TSLintno-inferrable-types
warnt:Sofern nicht die Möglichkeit besteht, dass die
serverId
Eigenschaft zunächst undefiniert ist, aber später definiert wird (z. B. in derconstructor
Funktion),number
kann sie sicher weggelassen werden.Dieser Ansatz funktioniert am besten mit
noImplicitAny
Optionen, da auf diese Weise keine Wahrscheinlichkeit besteht, dass ein Typ versehentlich weggelassen wird, weil er nicht abgeleitet wurde.quelle
Wie oben erwähnt, ist es technisch redundant und kann als Unordnung angesehen werden. Persönlich interessiert mich diese Meinung nicht und ich bevorzuge es, sowohl den Typ als auch den Wert für eine Vielzahl spezifischer kleiner Workflow-Gründe zu haben, und ich betrachte es nicht als das Maß an Unordnung, das eine Regel rechtfertigt. Wenn Sie es deaktivieren möchten, gehen Sie wie folgt vor.
ignore-properties
zu seinem Array hinzufügenrelevante tslint-Dokumente https://palantir.github.io/tslint/rules/no-inferrable-types/
quelle
Dieser Fehler ist auf Ihre Konfiguration in der
tslint.json
Datei zurückzuführen.Initialisieren Sie entweder einfach Ihre Variable als
serverId = 10;
oder
oder legen Sie einfach Ihre Konfiguration für die
no-inferrable-types
in Ihrer Datei tslint.json als festno-inferrable-types: false
quelle
Wenn Sie hierher gekommen sind, um nach einer Eslint-Lösung zu suchen, weil Tslint veraltet ist , fügen Sie diese Regel zu Ihrer
.eslintrc.js
Datei hinzu:module.exports = { ...m rules: { ..., "@typescript-eslint/no-inferrable-types": "off", ... }, };
quelle
Es ist unnötig, es liefert keine neuen Informationen. Es ist im Grunde ein Kommentar, der sagt "10 ist eine Zahl".
quelle
Das mag jetzt seltsam sein, aber ich habe den ähnlichen Fehler erhalten und konnte das Attribut "no-inferrable-types" in der Datei tslint.json meiner eckigen App nicht finden. Ich weiß nicht, warum es das überhaupt nicht erzeugt hat, aber ich musste es hier einfügen
"rules": { **"no-inferrable-types": false,** "directive-selector": [ true, "attribute", "app", "camelCase" ],
Und dann hat es wie ein Zauber funktioniert!
PS: Dies ist für jemanden, der möglicherweise mit dem gleichen Problem wie ich umherwandert, oder ich kann mich irren, weil niemand in einer der genannten Lösungen erwähnt hat, dass dies von unserem Ende in der JSON-Datei hinzugefügt werden muss.
quelle
Es könnte als Lärm gesehen werden. Es ist wichtiger, die nicht trivialen Teile einzugeben
quelle
in tslint.json Datei hinzufügen oder diese Regel ausführen:
"no-inferrable-types": [ true, "ignore-params", "ignore-properties" ]
quelle