Zurück zum Blog

Konkrete Fehlerquellen bei der nachträglichen Einführung von striktem TypeScript

TypeScriptrefactoring

Titelbild

Fazit

Das Projekt kimura512.dev begann in nativem JavaScript und wurde schrittweise auf striktes TypeScript umgestellt. Das nachträgliche Einfügen statischer Typen erfindet keine neuen Funktionen, sondern legt stillschweigende Annahmen offen, die zur Laufzeit Risiken bargen. Bis sämtliche Fehler behoben waren, pausierten neue Releases vollständig.

1. Aufdecken fehlender Übersetzungsschlüssel

Lokalisierungsdaten lagen gesammelt vor, doch fehlende Spracheinträge fielen früher erst auf der Live-Seite auf. Über das Konstrukt Record<Language, string> bricht der Build-Prozess sofort ab, wenn ein Text nicht in allen Zielsprachen hinterlegt ist.

Der Syntaxbaum behandelt Linkziele als optional. Da der Code von zwingend vorhandenen URLs ausging, drohten Laufzeitfehler. Durch saubere Typabgrenzung wurden fehlende Links mit robusten Fallbacks abgefangen.

3. Vereinheitlichung von ISO-Datumsangaben

Inkonsistente Datumsformate führten auf manchen Systemen zu fehlerhaften Darstellungen. Ein einheitliches Datenmodell stellte sicher, dass fehlerhafte Zeitangaben bereits bei der lokalen Validierung auffallen.

4. Verzicht auf riskante Typ-Behauptungen

Statt externe API-Antworten unkritisch mittels as durchzuwinken, fangen strukturierte Prüfungen an den Systemgrenzen fehlerhafte Nutzlasten mit Status 400 ab.

5. Bereinigung von React-Lebenszyklen

Die Umstellung erforderte saubere Initialwerte für useRef und standardisierte ReactNode-Typisierungen für Komponentenstrukturen.

6. Der Compiler als verlässlicher Schutzwall

Da der Build-Befehl den gesamten Programmcode validiert, bildet er das verlässlichste Sicherheitsnetz für Projekte mit überschaubaren Testsuiten.

7. Typisierte Komponentenvarianten

Indem UI-Eigenschaften über String-Union-Typen eingeschränkt wurden, lassen sich ungültige Design-Zustände bereits im Editor ausschließen.

8. Klare Trennung von Refactoring-Schritten

Typkorrekturen werden separat von optischen oder funktionalen Erweiterungen versioniert, um Nebeneffekte zu vermeiden.

Zusammenfassung

Wer die Eingangsdaten an den Rändern absichert, erzielt rasch eine hohe Gesamtsystemstabilität.

Betriebshinweise

Q. Wurde Strict-Mode sofort voll aktiviert?
Nein, die Regeln wurden schrittweise über mehrere Wochen hinweg scharfgeschaltet.

Q. Wurde 'any' vollständig verbannt?
Bis auf wenige Schnittstellen zu externen Bibliotheken, wo unknown genutzt wird, ist der Quelltext vollständig typisiert.