Wie man einen String in eine Zahl in TypeScript umwandelt: Top-Fehler und wie man sie vermeidet

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum eine einfache Aufgabe den Code zerstört

\n\n

Jeder Entwickler, der mit TypeScript arbeitet, steht früher oder später vor der Aufgabe: „Wie wandle ich einen String in eine Zahl um?“. Man sollte meinen, was könnte einfacher sein? Aber genau diese, auf den ersten Blick triviale Operation, wird zur Quelle Dutzender Bugs, besonders an der Schnittstelle von Frontend und Backend, wo Daten aus Eingabeformularen, APIs oder CSV-Parsing kommen.

\n\n

Auf Stack Overflow hat die Frage „How to convert a string to number in TypeScript?“ Zehntausende von Aufrufen. Und das ist kein Zufall. Entwickler ertrinken in Nuancen: NaN, parseInt gegen Number(), Genauigkeitsverlust und unerwartetes Verhalten mit leeren Strings. In diesem Artikel analysieren wir die Top-Fehler bei der Umwandlung eines Strings in eine Zahl in TypeScript und zeigen, wie man sie vermeidet. Sie erfahren, welche Methode Sie für eine bestimmte Aufgabe wählen und wie Sie wirklich zuverlässigen Code schreiben.

\n\n

Grundlegende Methoden zur Umwandlung eines Strings in eine Zahl in TypeScript

\n\n

Bevor wir über Fehler sprechen, erinnern wir uns an die Werkzeuge, die einem TypeScript-Entwickler zur Verfügung stehen. Jedes von ihnen verhält sich anders, und die Wahl der falschen Methode ist der erste und wichtigste Fehler.

\n\n

1. Die Funktion Number()

\n

Der offensichtlichste Weg. Number(value) versucht, den übergebenen Wert in eine Zahl umzuwandeln. Wenn dies nicht möglich ist, wird NaN zurückgegeben.

\n\n
const str: string = "42";\nconst num: number = Number(str);\nconsole.log(num); // 42\n\nconst invalid: string = "hallo";\nconst badNum: number = Number(invalid);\nconsole.log(badNum); // NaN
\n\n

2. Unäres Plus (+)

\n

Kurze Syntax, die dasselbe tut wie Number(). Prägnant, kann aber Anfänger verwirren.

\n\n
const price: string = "99.99";\nconst numericPrice: number = +price;\nconsole.log(numericPrice); // 99.99\n\nconst empty: string = "";\nconst zero: number = +empty;\nconsole.log(zero); // 0 — Achtung, das ist eine häufige Falle!
\n\n

3. parseInt() und parseFloat()

\n

Spezialisierte Funktionen zum Parsen von ganzen und gebrochenen Zahlen. Sie „beißen“ den numerischen Teil aus dem String ab und ignorieren nachfolgende Zeichen.

\n\n
const userInput: string = "123px";\nconst width: number = parseInt(userInput, 10);\nconsole.log(width); // 123 — die Zeichen 'px' wurden verworfen\n\nconst height: string = "45.67em";\nconst parsedHeight: number = parseFloat(height);\nconsole.log(parsedHeight); // 45.67
\n\n

4. Bitweise Operatoren (~~, | 0)

\n

Exotische Methode, die aus JavaScript stammt. Funktioniert nur für ganze Zahlen und verwirft den Nachkommateil.

\n\n
const str: string = "7.8";\nconst result: number = ~~str;\nconsole.log(result); // 7 — Nachkommateil verloren
\n\n

Top-5-Fehler bei der Umwandlung eines Strings in eine Zahl in TypeScript

\n\n

Nachdem wir nun die Werkzeuge besprochen haben, schauen wir uns an, wo Entwickler am häufigsten stolpern. Diese Fehler sind die sprichwörtlichen „Rechen“, auf die selbst erfahrene Programmierer treten.

\n\n

Fehler Nr. 1: Ignorieren von NaN

\n

Der häufigste Fehler ist, das Ergebnis nicht auf NaN zu überprüfen. TypeScript gibt keinen Fehler aus, wenn Sie NaN in arithmetischen Operationen oder Vergleichen verwenden, aber das Ergebnis wird unerwartet sein.

\n\n
const input: string = "keine zahl";\nconst value: number = Number(input);\n\n// Fehler: NaN nimmt an Berechnungen teil\nconst total = value + 10;\nconsole.log(total); // NaN\n\n// Vergleich mit NaN ist immer falsch\nif (value === NaN) {\n  console.log("Das wird nie funktionieren");\n}
\n\n

Wie man es vermeidet: Verwenden Sie immer isNaN() oder Number.isNaN() zur Überprüfung. Die zweite Variante ist vorzuziehen, da sie nicht-numerische Typen nicht umwandelt.

\n\n
if (Number.isNaN(value)) {\n  console.error("Es wurde keine Zahl eingegeben");\n  // Sie können einen Standardwert zurückgeben oder einen Fehler anzeigen                

Blogs

Buchempfehlungen