Ein Union (A | B) bedeutet "entweder A oder B." Ein Intersection (A & B) bedeutet "sowohl A als auch B gleichzeitig."
ts
= | | ;
: = ;
() { }
Ein Union (A | B) bedeutet "entweder A oder B." Ein Intersection (A & B) bedeutet "sowohl A als auch B gleichzeitig."
= | | ;
: = ;
() { }
function format(x: string | number) {
// x.toFixed(2); // ❌ toFixed doesn't exist on string
if (typeof x === "number") return x.toFixed(2); // ✅ narrowed to number
return x.toUpperCase(); // ✅ here it's a string
}
Bis Sie einen Union eingrenzen, können Sie nur auf Member zugreifen, die auf jedem Member des Union vorhanden sind — der Compiler schützt Sie.
type Name = { name: string };
type Age = { age: number };
type Person = Name & Age; // must have BOTH name and age
const p: Person = { name: "Ann", age: 30 }; // both required
Intersections eignen sich hervorragend zum Komponieren/Mischen von Objekttypen (z. B. Props zu einem vorhandenen Typ hinzufügen).
Unions modellieren "eine von mehreren Möglichkeiten" — die Grundlage für sicheres State Modeling (z. B. discriminated unions für Reducer-State), Funktionsüberladungen und nullable Typen (T | null).
Intersections kombinieren Typen miteinander.
Zusammen machen sie Typescripts Typ-System ausdrucksstark genug, um reale Daten präzise abzubilden.