Start·Fehlermeldungen

tsc · Build und Typen

Die Meldung

error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.

Was es bedeutet

Der Typ, den die Funktion annimmt, und der Typ, den Sie übergeben haben, unterscheiden sich; die Meldung nennt sie in Reihenfolge — zuerst Ihr Wert, dann der erwartete. Der weitaus häufigste Fall ist ein Wert aus einem Formularfeld, einem URL-Query-String oder JSON, der als String dort ankommt, wo eine Zahl erwartet wird. Einmal an der Grenze zu konvertieren ist die Antwort, doch Number(value) liefert bei Misserfolg NaN statt zu werfen — dieses NaN muss aufgehalten werden, und Number.isFinite(n) ist die passende Prüfung.

Die Lösung

Hier hilft kein Einzeiler. Die Erklärung sagt, worauf zu schauen ist.

Ausgegeben von
tsc
Build und Typen
10

Build-Fehler sind ein Werkzeug, das verweigert, bevor irgendetwas läuft — sie zerbrechen im Moment ihres Auftretens nichts, stellen aber zwei Fragen: reparieren Sie Typ oder Pfad passend zur echten Form, oder schieben Sie diese eine Zeile mit einem as any oder einem Unterdrückungskommentar durch? Und genau hier zeigen sich erstmals die Dinge, die nur auf dem eigenen Rechner stimmen: Groß-/Kleinschreibung, Endungen und Umgebungsvariablen.

Eine Fehlermeldung lesen

  • Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
  • Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
  • Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
  • Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
  • Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.

Häufige Fragen

Q. Was bedeutet „error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.“?

Der Typ, den die Funktion annimmt, und der Typ, den Sie übergeben haben, unterscheiden sich; die Meldung nennt sie in Reihenfolge — zuerst Ihr Wert, dann der erwartete. Der weitaus häufigste Fall ist ein Wert aus einem Formularfeld, einem URL-Query-String oder JSON, der als String dort ankommt, wo eine Zahl erwartet wird. Einmal an der Grenze zu konvertieren ist die Antwort, doch Number(value) liefert bei Misserfolg NaN statt zu werfen — dieses NaN muss aufgehalten werden, und Number.isFinite(n) ist die passende Prüfung.

Q. Wie behebe ich das?

Es gibt keinen Einzeiler. Die Erklärung oben sagt, worauf zu schauen ist.

Q. Welches Werkzeug gibt das aus?

tsc. Es gehört zu Build und Typen, und die Meldung hat 14 Wörter.

Verwandte Fehler