TypeScript 5.5 ist da: Was sich im neuen Release geändert hat
Am 14. Juni 2024 hat das Microsoft-Team offiziell das Release von TypeScript 5.5 vorgestellt – eine der bedeutendsten Versionen des beliebten statischen Typisierers für JavaScript. Im neuen Update erhielten Entwickler nicht nur Fehlerbehebungen, sondern auch eine Reihe leistungsstarker Funktionen, die das Schreiben von Code vereinfachen und die Leistung steigern. Werfen wir einen Blick auf die wichtigsten Neuerungen.
Isolierte Deklarationen (Isolated Declarations)
Die am meisten erwartete Neuerung in TypeScript 5.5 ist die experimentelle Unterstützung des Isolated Declarations-Modus. Der Compiler kann nun Deklarationsdateien (.d.ts) für jedes Modul unabhängig generieren, ohne das gesamte Projekt laden zu müssen. Dies ist besonders nützlich für große Monorepos und Builds, bei denen eine Beschleunigung des Compilers entscheidend ist. Der Modus kann über das Flag --isolatedDeclarations in der tsconfig.json aktiviert werden.
- Schnellere Builds: Die isolierte Typkompilierung ermöglicht eine Parallelisierung des Prozesses und verkürzt die Wartezeit.
- Komfort für Bibliotheken: Paketautoren können jetzt schneller aktuelle Typen generieren.
- Abwärtskompatibilität: Der neue Modus bricht keinen bestehenden Code und kann schrittweise eingeführt werden.
Kontrolle von Speicherlecks in Closures
TypeScript 5.5 kann nun vor potenziellen Speicherlecks warnen, die mit Closures zusammenhängen. Der Compiler analysiert, ob ein Closure unnötige Referenzen auf große Objekte oder DOM-Elemente hält. Zum Beispiel:
function setupHandler() { const largeData = new Array(1000000).fill('x'); document.getElementById('btn')?.addEventListener('click', () => { console.log('clicked'); // Zuvor warnte der Compiler nicht, dass largeData im Speicher bleibt });}Jetzt gibt TypeScript eine Warnung aus, wenn es erkennt, dass ein Closure Variablen erfasst, die darin nicht verwendet werden, aber aufgrund der Bindung an den Event-Handler im Speicher bleiben. Dies hilft, effizienteren Code ohne manuelles Profiling zu schreiben.
Verbesserte Typinferenz für Arrays und Destrukturierung
In der neuen Version wurde der Mechanismus zur Typinferenz erheblich überarbeitet. TypeScript 5.5 bestimmt Typen bei der Destrukturierung von Arrays und Tupeln jetzt genauer. Bei der Arbeit mit APIs, die Tupel zurückgeben, erkennt der Compiler nun jedes Element korrekt:
function fetchUser() { return [1, 'Alice'] as const;}const [id, name] = fetchUser(); // id: number, name: string (zuvor war es union)Dies erspart überflüssige manuelle Annotationen und macht den Code sauberer.
Automatische Typableitung aus JSDoc
Bei Verwendung von allowJs und der Überprüfung von JavaScript-Dateien kann TypeScript 5.5 Typen aus JSDoc-Kommentaren jetzt auch in komplexen Fällen automatisch ableiten – zum Beispiel für Callbacks mit mehreren Parametern. Dies ist besonders relevant für Projekte, die schrittweise von JS zu TS migrieren.
Weitere Verbesserungen und Fehlerbehebungen
- Geschwindigkeitsoptimierung: Bis zu 15 % schnellere Kompilierung für große Projekte durch Zwischenspeicherung von Zwischenergebnissen.
- Neue Flags:
--noUncheckedSideEffectImportsverbietet Imports ohne Seiteneffekte, wenn sie nicht explizit verwendet werden. - Fehlerbehebungen: Über 80 Fehler wurden behoben, die mit