🧪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
…