Mapped Types
Mapped Types ermöglichen es, neue Typen basierend auf den Eigenschaften eines existierenden Typs zu erstellen. Sie sind essenziell, um Objektstrukturen dynamisch zu transformieren.
Snippet öffnen →Lies diese TypeScript-Snippets für Fortgeschrittene Zeile für Zeile — jedes kommt mit einer Erklärung, was der Code tut und warum.
Mapped Types ermöglichen es, neue Typen basierend auf den Eigenschaften eines existierenden Typs zu erstellen. Sie sind essenziell, um Objektstrukturen dynamisch zu transformieren.
Snippet öffnen →Intersection Types kombinieren mehrere Typen zu einem. Sie erlauben das Zusammenführen existierender Typen zu einem Typ, der alle benötigten Eigenschaften besitzt.
Snippet öffnen →Discriminated Unions nutzen eine gemeinsame Literal-Eigenschaft (den Diskriminator), um TypeScript das sichere Eingrenzen von Union-Mitgliedern zu ermöglichen.
Snippet öffnen →Bedingte Typen wählen einen von zwei möglichen Typen basierend auf einer Bedingung aus, die als Typhierarchie-Test ausgedrückt wird.
Snippet öffnen →Die Verwendung von 'keyof' mit Generics stellt sicher, dass ein Funktionsparameter ein gültiger Schlüssel eines spezifischen Objekts ist, was volle Typsicherheit und IDE-Autovervollständigung bietet.
Snippet öffnen →Abstrakte Klassen können nicht direkt instanziiert werden. Sie dienen als Vorlagen, die es ermöglichen, gemeinsame Methoden zu definieren, während Unterklassen gezwungen werden, spezifische 'abstra…
Snippet öffnen →Template-Literal-Typen ermöglichen es, neue String-Typen durch die Kombination bestehender Union-Typen zu erstellen. Dies ist äußerst nützlich, um vorhersehbare String-Muster wie CSS-Klassen oder A…
Snippet öffnen →Index-Signaturen ermöglichen es Objekten, flexible Keys zu haben, die im Voraus nicht bekannt sind. Man definiert den Typ des Keys (meist String oder Number) und den Typ des zurückgegebenen Wertes.
Snippet öffnen →Der Utility-Typ 'ReturnType' extrahiert den Rückgabetyp einer Funktion. Dies stellt sicher, dass sich abhängige Typen automatisch aktualisieren, wenn sich die Implementierung der Funktion ändert, w…
Snippet öffnen →Ein Type-Guard ist eine Funktion, die ein Typ-Prädikat ('pet is Fish') zurückgibt. Es ermöglicht TypeScript, den Typ eines Objekts innerhalb eines Codeblocks nach einer Laufzeitprüfung einzugrenzen.
Snippet öffnen →Anstatt sich auf unbehandelte Promise-Rejections zu verlassen, verpackt dieses Muster asynchrone Ergebnisse in typisierte Erfolgs- oder Fehler-Objekte. Es bietet eine strukturierte Fehlerbehandlung…
Snippet öffnen →Die Verwendung von readonly-Modifikatoren für Array-Parameter verhindert die versehentliche Mutation von Eingabedaten während der Verarbeitung. Pipeline-Operationen wie filter und map erzeugen neue…
Snippet öffnen →Branded Types (Markierte Typen) erstellen nominale Typunterscheidungen über primitiven Typen wie Strings. Dies zwingt Entwickler dazu, Benutzereingaben durch eine Bereinigungsfunktion zu leiten, be…
Snippet öffnen →Das Erstellen von Test-Doubles durch Implementieren von Domänen-Schnittstellen ermöglicht Unit-Tests ohne externe Mocking-Frameworks. Die Mock-Klasse zeichnet Aufrufparameter für Assertionen auf un…
Snippet öffnen →Asynchrone Generatoren, die mit AsyncGenerator<T, ReturnType, NextType> typisiert sind, ermöglichen die verzögerte Verarbeitung asynchroner Sequenzen. Das sequentielle Verarbeiten von Batches mit f…
Snippet öffnen →Dependency Injection (DI) ist ein zentrales Entwurfsmuster in modernen Anwendungssystemen. Unter Verwendung von Generics und Symbols in TypeScript lässt sich ein typsicherer DI-Container erstellen,…
Snippet öffnen →Ein Event-Bus entkoppelt Sender und Empfänger in modular aufgebauten Softwarearchitekturen. Durch gemappte Typen und indizierten Zugriff (`Events[K]`) garantiert TypeScript exakte Nutzlast-Typen fü…
Snippet öffnen →Middleware-Pipelines verarbeiten Anfragen oder Aufgaben sequentiell. Durch Parametrisierung der Middleware-Funktionen mit generischem Kontext erzielt man eine erweiterbare Logikkette mit voller Aut…
Snippet öffnen →Frameworks zur zentralen Zustandsverwaltung beruhen auf vorhersagbaren Mutationen und reaktiven Abonnements. Durch Kombination von `Readonly<T>`, `Partial<T>` und `Object.freeze` wird Zustand-Unver…
Snippet öffnen →Validierungsbibliotheken sind unverzichtbare Bausteine von Frameworks, da sie unstrukturierte Eingaben in typsichere Daten umwandeln. Durch bedingte Typen (`infer`) leitet TypeScript Zieltypen auto…
Snippet öffnen →Diskriminierte Unionen verbinden eine literale Eigenschaft ('kind') mit der Typverfeinerung von TypeScript. Indem der default-Zweig eines switch-Blocks an eine Funktion übergeben wird, die nur den…
Snippet öffnen →Asynchroner Generatorfunktionen kombinieren das Schlüsselwort yield mit asynchronen Operationen. Die Rückgabe einer AsyncGenerator-Schnittstelle ermöglicht es Konsumenten, paginierte Daten nacheina…
Snippet öffnen →Bedingte Typen ermöglichen Typtransformationen basierend auf Formprüfungen (T extends U ? X : Y). Das Schlüsselwort 'infer' führt eine Typvariable innerhalb der bedingten Prüfung ein, um innere Typ…
Snippet öffnen →Mapped Types können über Objektschlüssel iterieren und mittels Vorlagen-Literal-Typen sowie dem 'as'-Schlüsselwort Eigenschaftsnamen zur Kompilierzeit dynamisch umbenennen. Dieser Ausschnitt verwan…
Snippet öffnen →Anstatt sich auf das Werfen unbewältigter Ausnahmen zu verlassen, modellieren explizite Result-Typen Ergebnisse mithilfe eines Erfolgs-Flags. Dies zwingt Aufrufer dazu, den Ergebnisstatus zu prüfen…
Snippet öffnen →Typ-Prädikate ermöglichen es Funktionen, als benutzerdefinierte Type Guards zu agieren. Durch die Angabe von `data is UserProfile` als Rückgabetyp verengt TypeScript den Typ von `payload` in Beding…
Snippet öffnen →Const-Assertions (`as const`) wandeln Objektliterale und Arrays rekursiv in schreibgeschützte Literaltypen um. Dies verhindert Änderungen an Eigenschaften und erzwingt exakte Werte anstelle breiter…
Snippet öffnen →Template-Literal-Typen erzeugen String-Unions durch Kombination von Vorlagen mit Modifikatoren wie `Capitalize`. Dies ermöglicht die Erstellung typsicherer, dynamischer Eigenschaftsnamen wie Event-…
Snippet öffnen →Der `satisfies`-Operator überprüft, ob ein Objekt einem Typen wie `Record<K, V>` entspricht, ohne spezifische Schlüssel-Inferenzen zu löschen. Dies kombiniert Typsicherheit mit präziser Autovervoll…
Snippet öffnen →Schnittstellen in TypeScript können sich selbst rekursiv referenzieren, um hierarchische Datenstrukturen wie Bäume zu modellieren, während statische Typparameter über alle Ebenen hinweg erhalten bl…
Snippet öffnen →