<T> ·
extends ·
infer ·
keyof ·
Utility Types ·
Generic Constraints
Generics ermöglichen die Erstellung von wiederverwendbaren, typsicheren Komponenten. Sie sind das Herzstück von TypeScripts Typsystem und essenziell für die Entwicklung robuster Anwendungen.
Generic Functions erlauben es, Funktionen zu schreiben, die mit verschiedenen Typen arbeiten können, ohne die Typsicherheit zu verlieren. Der Typ wird beim Aufruf festgelegt.
Generic Interfaces definieren Strukturen, die mit verschiedenen Typen parametrisiert werden können. Sie sind ideal für Container, Wrapper und Datenstrukturen.
Generic Classes ermöglichen die Erstellung von Klassen, die mit verschiedenen Typen arbeiten können – wie Container, Collections oder Datenstrukturen.
Constraints schränken Generic-Typen ein – sie definieren, welche Eigenschaften oder Methoden ein Typ haben muss. Das wird mit dem Schlüsselwort extends erreicht.
infer wird in Conditional Types verwendet, um Typen zu extrahieren – z.B. den Elementtyp eines Arrays oder den Rückgabetyp einer Funktion.
infer ist ein mächtiges Werkzeug für fortgeschrittene Typmanipulationen. Es wird oft in Bibliotheken verwendet, um Typen von generischen Komponenten zu extrahieren.
Generic Utility Types sind eingebaute Hilfstypen, die häufige Typ-Transformationen durchführen. Sie sind selbst generisch und arbeiten mit beliebigen Typen.
| Utility | Beschreibung | Beispiel |
|---|---|---|
| Partial<T> | Macht alle Eigenschaften optional | { id?: number; name?: string } |
| Required<T> | Macht alle Eigenschaften erforderlich | { id: number; name: string } |
| Readonly<T> | Macht alle Eigenschaften schreibgeschützt | { readonly id: number; readonly name: string } |
| Pick<T, K> | Wählt nur bestimmte Schlüssel aus | { name: string; email: string } |
| Omit<T, K> | Entfernt bestimmte Schlüssel | { name: string; email: string } |
| Record<K, T> | Erstellt einen Objekttyp mit Schlüsseln K | { [key: string]: User } |
| Exclude<T, U> | Entfernt Typen aus einer Union | string | number |
| Extract<T, U> | Extrahiert Typen aus einer Union | string |
| ReturnType<T> | Rückgabetyp einer Funktion | number |
| Parameters<T> | Parameter-Typen einer Funktion | [string, number] |
| NonNullable<T> | Entfernt null und undefined | string | number |
<T>
interface<T>
class<T>
extends
infer
Partial
function identity<T>(value: T): T { return value; } ·
type UserUpdate = Partial<User>