TypeScript: Anleitungen und Praxiswissen | Seite 14 | mironsoft Blog
TypeScript
-
18.01.2025
Handgeschriebene Type Guards mit manuellen typeof- und in-Prüfungen driften bei jeder Änderung am zugrunde liegenden Typ leicht auseinander und werden in größeren Codebasen zur Fehlerquelle. Dieser Artikel zeigt, wie sich Runtime Type Guards automatisch aus Zod-Schemas ableiten lassen, mit einer generischen Guard-Factory, Discriminated-Union-Guards und einer klaren Trennung zwischen Type Predicate und Assertion Function.
-
15.01.2025
Ein einzelner Conditional Type prüft eine Bedingung einmal. Rekursive Conditional Types wenden dieselbe Bedingung wieder und wieder auf sich selbst an, bis eine Abbruchbedingung erreicht ist, und verwandeln damit verschachtelte Objekte, Tupel und Strings vollständig zur Compile-Zeit. Wer die Mechanik, das Rekursionslimit und das Tail-Rekursion-Muster kennt, kann DeepReadonly, Tupel-Reverse oder rekursive Template Literal Types robust selbst schreiben.
-
14.01.2025
Wer Testdaten als lose getippte Objektliterale schreibt, riskiert stillen Verfall, sobald sich der zugrunde liegende Domain-Type ändert und ein neues Pflichtfeld entsteht. Typsichere Factory-Funktionen mit Partial-T und sinnvollen Defaults zentralisieren Testdaten an einer Stelle, erzwingen Synchronität mit dem echten Interface und halten Vitest-Suiten über hunderte Testdateien hinweg wartbar und konsistent.
-
13.01.2025
Das infer Schlüsselwort ist der Schlüssel zu vielen TypeScript Utility Types und erlaubt es, Teiltypen wie das Resultat eines Promise oder die Parameter einer Funktion direkt aus einem bestehenden Typ zu extrahieren, ohne sie manuell zu duplizieren. Wer versteht, wie infer innerhalb conditional types arbeitet, kann eigene Utility Types bauen, Duplikate vermeiden und Typen automatisch synchron zu ihrer Quelle halten.
-
12.01.2025
Arrays gelten in JavaScript standardmäßig als veränderlich, was in größeren Codebasen zu subtilen Fehlern führt, wenn eine Funktion ein übergebenes Array unbeabsichtigt verändert. TypeScript bietet mit readonly Arrays und readonly Tupeln ein Werkzeug, um solche Mutationen bereits zur Kompilierzeit auszuschließen.
-
08.01.2025
React Hooks funktionieren auch ohne explizite Typen, meistens jedoch nur zufällig richtig. Sobald ein Zustand mehrere mögliche Formen annimmt, eine Ref auf drei unterschiedliche Arten verwendet wird oder ein Custom Hook Daten aus einer API lädt, entscheidet die Typisierung darüber, ob Fehler beim Kompilieren oder erst beim Nutzer auffallen. Dieser Artikel zeigt, wie man React Hooks mit TypeScript von Grund auf typsicher gestaltet, von useState bis zum eigenen generischen Custom Hook.
-
07.01.2025
Die Wahl der TypeScript Laufzeit entscheidet direkt über Entwicklerproduktivität und Build Geschwindigkeit im Alltag. Dieser Artikel vergleicht die drei gängigsten Optionen für Node.js Projekte anhand von Startzeit, Typprüfung und Watch Mode Unterstützung und zeigt, wann eine vollständige Typprüfung während der Ausführung wirklich nötig ist und wann ein schneller Feedback Zyklus für einmalige Skripte, lokale Entwicklung und CI Pipelines die bessere Wahl ist.
-
06.01.2025
Ein Jahr nach einer Typentscheidung weiß im Team meist niemand mehr, warum ein bestimmtes Generic-Constraint oder eine Discriminated Union genau so modelliert wurde. Ein kurzes Architecture Decision Record hält Grund, Alternativen und Konsequenzen fest, damit Typentscheidungen nachvollziehbar bleiben, statt bei jedem Refactoring neu erraten zu werden.
-
03.01.2025
Typsicherheit scheitert selten am Typsystem selbst, sondern daran, dass sie eine individuelle Vorliebe einzelner Entwickler bleibt statt gemeinsam getragener Standard im Team zu werden. Mit CI-Gates, klaren Review-Konventionen und sichtbaren Metriken wird Typsicherheit zu einer Praxis, die auch dann hält, wenn niemand mehr hinschaut.
-
02.01.2025
Wer any unkontrolliert im Code verteilt, hebelt die Typprüfung genau an den Stellen aus, an denen sie am wichtigsten wäre. Dieser Artikel zeigt den praktischen Weg zu einer typsicheren Codebase: noImplicitAny gezielt aktivieren, ESLint-Regeln schrittweise verschärfen, unknown und Generics als Ersatz nutzen und den Fortschritt mit type-coverage messbar machen, ohne die laufende Entwicklung zu blockieren.