TypeScript · Experte
TypeScript verwendet strukturelle Typisierung, aber manchmal benötigen wir nominale Typisierung, um das versehentliche Mischen logisch unterschiedlicher Primitivtypen (wie Währungen oder IDs) zu ve…
securitybestpractices
Snippet öffnen →TypeScript · Experte
Dieses Snippet nutzt Template-Literal-Typen und rekursive bedingte Typen, um dynamische Pfadparameter zur Kompilierzeit aus einem String-Literal zu extrahieren. Es zeigt, wie TypeScript Strings par…
syntaxdatatypes
Snippet öffnen →TypeScript · Experte
Dieses Experten-Snippet zeigt, wie man einen Union-Typ in einen Intersection-Typ umwandelt. Es nutzt die Tatsache aus, dass Funktionsparameter kontravariant sind, was TypeScript dazu zwingt, mehrer…
datatypesperformance
Snippet öffnen →TypeScript · Experte
Eingeführt in TypeScript 5.2, nutzt die 'using'-Deklaration den 'Symbol.dispose'-Hook, um sicherzustellen, dass Ressourcen wie Dateihandles oder Datenbankverbindungen automatisch beim Verlassen des…
syntaxbestpractices
Snippet öffnen →TypeScript · Experte
Durch die Zuweisung einer Variable zum Typ 'never' in einem Default-Zweig erstellen Sie eine Prüfung auf Vollständigkeit zur Kompilierzeit. Wenn das 'Shape'-Union um ein Mitglied erweitert wird, sc…
controlflowerrorhandling
Snippet öffnen →TypeScript · Experte
Assertion-Signaturen verwenden das 'asserts'-Schlüsselwort, um dem Compiler mitzuteilen, dass eine Bedingung wahr sein muss, wenn die Funktion normal zurückkehrt. Dies schränkt Typen für den Rest d…
controlflowfunctions
Snippet öffnen →TypeScript · Experte
Stage 3 Decorators bieten eine typsichere Möglichkeit, Klassenmitglieder zu umschließen. Im Gegensatz zu alten experimentellen Decorators nutzen diese ein strukturiertes 'context'-Objekt, das Namen…
ooppatterns
Snippet öffnen →TypeScript · Experte
Der 'satisfies'-Operator validiert, ob ein Objekt einem Typ entspricht, ohne den inferierten Typ zu erweitern. Dies erlaubt es, spezifische Literal-Informationen zu behalten (z.B. dass 'red' ein Tu…
syntaxbestpractices
Snippet öffnen →TypeScript · Experte
TypeScript 4.7 führte explizite Varianz-Annotationen 'in' und 'out' für generische Typparameter ein. 'out T' markiert eine kovariante Position (der Typ erscheint nur in Ausgaben), 'in T' kennzeichn…
syntaxdatatypes
Snippet öffnen →TypeScript · Experte
Promise.withResolvers (ES2024, TS 5.4+) liefert das Promise zusammen mit seinen resolve- und reject-Funktionen, ohne dass du sie im Executor-Callback einfangen musst. Das umgeht das hässliche 'let…
asyncpatterns
Snippet öffnen →TypeScript · Experte
Der 'satisfies'-Operator (TS 4.9+) ist das richtige Werkzeug für Test-Doubles. Anders als eine Typannotation (': UserRepo') verbreitert er die Variable nicht auf das Interface — findById behält sei…
testingbestpractices
Snippet öffnen →TypeScript · Experte
Der 'const'-Modifier auf einem Typparameter (TS 5.0+) weist die Inferenz an, das Argument so zu behandeln, als hätte der Aufrufer 'as const' geschrieben — String-Literale, readonly Arrays und Tuple…
functionssyntax
Snippet öffnen →TypeScript · Experte
Wer Symbol.asyncIterator implementiert, macht aus einer cursor-basierten Quelle ein vollwertiges for-await-of-Iterable. Der Async-Generator hält den Cursor auf dem Call-Stack statt in Instanzfelder…
asyncpatternsoop
Snippet öffnen →TypeScript · Experte
Equal vergleicht zwei Typen, indem zwei generische Funktionssignaturen über ihnen geprüft werden – streng genug, um `any` und `unknown` zu unterscheiden und strukturelle Beinahetreffer abzulehnen.…
testingpatterns
Snippet öffnen →TypeScript · Experte
AbortSignal.timeout erzeugt ein Signal, das nach der angegebenen Frist automatisch abbricht; AbortSignal.any führt mehrere Signale zusammen, sodass das erste Abort gewinnt und das kombinierte Signa…
asyncerrorhandling
Snippet öffnen →TypeScript · Experte
`reduce<Counts>` fixiert den Accumulator-Typ, sodass der Rückgabewert in jedem Zweig strukturell gegen Counts geprüft wird statt zu `Event | Counts` zu weiten. Im switch liefert das Diskriminantenf…
arrayspatternsbestpractices
Snippet öffnen →TypeScript · Experte
Variadische Tupel erlauben es, die Parameterliste einer Funktion als generisches Tupel zu behandeln und Parameter Schritt für Schritt abzutragen. Der Curry-Typ rekursiert durch das Tupel: Jeder Sch…
arraysfunctions
Snippet öffnen →TypeScript · Experte
`await using` (TC39 Explicit Resource Management, seit TypeScript 5.2) bindet ein AsyncDisposable an den Block-Scope und ruft beim Verlassen — auch im Fehlerfall — dessen `Symbol.asyncDispose`-Meth…
asyncpatternserrorhandling
Snippet öffnen →TypeScript · Experte
TypeScripts strukturelles Typsystem behandelt jeden `string` als austauschbar — validierte Werte mischen sich unbemerkt mit Rohdaten. Ein Branded Type markiert ein Primitiv mit einer Phantom-Eigens…
datatypessecuritypatterns
Snippet öffnen →TypeScript · Experte
Rekursive Conditional Types in Kombination mit variadischen Tupel-Spreads erlauben Berechnungen auf Arrays auf Typ-Ebene — nicht nur zur Laufzeit. `Reverse` trennt den Kopf ab, rekursiert über den…
arraysdatatypes
Snippet öffnen →TypeScript · Experte
Beispielbasierte Tests prüfen Einzelfälle; property-basierte Tests behaupten Invarianten über einen generierten Stichprobenraum. Modelliert man Generatoren als `Gen<T> = () => T`, lassen sie sich m…
testingfunctionspatterns
Snippet öffnen →TypeScript · Experte
`Array<T>` und `T[]` tragen keine Längeninformation auf Typebene — eine Funktion für 3-Vektoren kann zur Compile-Zeit keinen 2-Vektor ablehnen. Der endrekursive `Tuple<T, N, R>`-Builder sammelt Ele…
arraysdatatypes
Snippet öffnen →TypeScript · Experte
Library-Autoren testen Laufzeitverhalten mit Vitest oder Jest, aber Typ-Verträge brauchen ein eigenes Gate. Der `Equal<A, B>`-Trick nutzt aus, dass zwei Funktionstypen mit internen Conditionals nur…
testingpatterns
Snippet öffnen →TypeScript · Experte
`Promise.all` ist fail-fast: ein Reject verwirft alle erfüllten Werte — falsch, sobald partieller Erfolg fachlich Sinn ergibt (Fan-out-Fetches, Batch-Writes, parallele Migrations). `Promise.allSett…
asyncerrorhandling
Snippet öffnen →