TypeScript ist eine Erweiterung von JavaScript, die statische (strenge) Typisierung implementiert. Das bedeutet, dass die Typprüfung zur Compile-Zeit und nicht zur Laufzeit, wie in JavaScript, erfolgt.
Hauptunterschiede:
Vorteile in großen Projekten:
Beispiel:
type User = { name: string; age: number; } function greet(user: User): string { return 'Hallo, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // OK
Frage: Kann man eine Variable vom Typ any in einem TypeScript-Projekt deklarieren, und verliert das Projekt dadurch die Vorteile der strengen Typisierung?
Antwort:
Ja, TypeScript erlaubt die Verwendung des Typs any, was dem Fehlen einer Typisierung für diese Variable entspricht. Wenn any häufig verwendet wird, hebt dies den Hauptvorteil von TypeScript – die strenge Typisierung – auf, und man läuft Gefahr, typische Laufzeitfehler wie in JavaScript zu erhalten.
Beispiel:
let data: any = 'test'; data = 42; // Ein Fehler wird nicht auftreten, könnte aber Probleme verursachen
Geschichte
Ein Entwickler verwendete häufig den Typ
anyfür komplexe Objekte, um "schneller voranzukommen". In der Folge kam eines Tages ein Objekt mit fehlenden Feldern an, und die Anwendung stürzte unerwartet ab: Der Fehler gelangte aufgrund fehlender Typprüfung in die Produktion.
Geschichte
In einem großen Projekt fand der Austausch von Nachrichten zwischen zwei verschiedenen Mikrodiensten statt. Einer der Dienste änderte die Struktur des Objekts, aber TypeScript warnte nicht, da der Typ explizit als
anyangegeben war. Der Bug wurde einen Monat später anhand von Benutzerbeschwerden entdeckt.
Geschichte
Ein junger Entwickler gab den Rückgabewert einer öffentlichen Funktion nicht an und verließ sich auf die automatische Typableitung. Nach einer Refaktorisierung funktionierten die Typ-Erwartungen auf der anderen Seite nicht mehr, was zu einer Kettenreaktion von Bugs im gesamten Projekt führte.