🧪Typ-Labor
Mit Typen kann man rechnen: Utility Types bauen aus einem Typ einen neuen, Mapped und Conditional Types sind die Werkzeuge dafür. Alle Ergebnisse hier wertet der Compiler aus – nichts ist vorgeschrieben.
🧰Utility Types – vorher und nachher
Eingebaute Typen aus der Standardbibliothek. Grün = neu, gelb = geändert, rot = entfernt.
Macht jede Eigenschaft optional (?). Typisch für Aktualisierungen („Patch“), bei denen nur ein Teil der Felder mitkommt.
Definition in lib.es5.d.ts (TypeScript 6.0.3)
type Partial<T> = { [P in keyof T]?: T[P]; };
Vorher: Nutzer
Compiler rechnet …
→
Nachher: Partial<Nutzer>
Compiler rechnet …
Quelltext, den der Compiler auswertet
interface Nutzer { id: number; name: string; email?: string; readonly erstellt: Date; } type Vorher = Nutzer; type Nachher = Partial<Nutzer>;
Ausgangstyp: interface Nutzer { id: number; name: string; email?: string; readonly erstellt: Date; }
🧮Typ-Programmierung Schritt für Schritt
Wie wertet der Compiler einen Mapped oder Conditional Type aus? Jeder Schritt ist ein eigener Typ-Ausdruck mit berechnetem Ergebnis.
Ein Mapped Type läuft mit [K in …] über eine Menge von Schlüsseln und baut für jeden eine Eigenschaft. keyof T liefert die Schlüssel, T[K] den Typ der Eigenschaft (Indexed Access Type).
Definitionen
Schritt 1 / 4 · Tasten ← →
Schritt 1: jedes Ergebnis ⇒ wurde vom Compiler berechnet
🔬Eigener Typ-Auswerter
Definitionen schreiben, Ausdruck eingeben – der Compiler zeigt das Ergebnis.
Eigene Definitionen
Ergebnis
…