Az union (A | B) azt jelenti, hogy "A vagy B." Az intersection (A & B) azt jelenti, hogy "A és B egyszerre."
ts
= | | ;
: = ;
() { }
Az union (A | B) azt jelenti, hogy "A vagy B." Az intersection (A & B) azt jelenti, hogy "A és B egyszerre."
= | | ;
: = ;
() { }
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
}
Amíg nem szűkíted le az uniont, csak az olyan tagokhoz férhetsz hozzá, amelyek az union minden tagjában jelen vannak — a fordító megvéd téged.
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
Az intersectionok nagyszerűek az objektum típusok összeállításához/keveréséhez (pl. props hozzáadása egy meglévő típushoz).
Az unionok a "több lehetőség közül egyet" modellezik — az biztonságos állapotmodellezés alapja (pl. megkülönböztetett unionok a reducer állapothoz), függvénytöbbszörözés és nullable típusok (T | null).
Az intersectionok típusokat kombinálnak egymáshoz.
Eggyütt olyan kifejezőre teszik a TypeScript típusrendszerét, hogy pontosan tükrözze a valós adatokat.