A union (A | B) betekent "hetzij A of B." An intersection (A & B) betekent "zowel A als B tegelijk."
ts
= | | ;
: = ;
() { }
A union (A | B) betekent "hetzij A of B." An intersection (A & B) betekent "zowel A als B tegelijk."
= | | ;
: = ;
() { }
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
}
Totdat u een union narrow maakt, kunt u alleen toegang krijgen tot leden die op elk lid van de union aanwezig zijn — de compiler beschermt u.
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 zijn geweldig voor het samenstellen/mengen van objecttypen (bijv. props toevoegen aan een bestaand type).
Unions modelleren "een van meerdere mogelijkheden" — de basis van veilige state modeling (bijv. discriminated unions voor reducer state), functieoverloads en nullable types (T | null).
Intersections stellen typen samen.
Samen maken ze TypeScript's type system expressief genoeg om echte gegevens nauwkeurig weer te spiegelen.