Një union (A | B) nënkupton "ose A ose B." Një intersection (A & B) nënkupton "të dy A dhe B në të njëjtën kohë."
ts
= | | ;
: = ;
() { }
Një union (A | B) nënkupton "ose A ose B." Një intersection (A & B) nënkupton "të dy A dhe B në të njëjtën kohë."
= | | ;
: = ;
() { }
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
}
Deri sa të kufizoni një union, mund të aksesoni vetëm anëtarët e pranishëm në secilin anëtar të union-it — kompajleri ju mbron.
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
Intersection-et janë të shkëlqyera për të përbërë/përzier llojet e objekteve (p.sh. shtim i prop-ve në një lloj ekzistues).
Union-et modelojnë "një nga disa mundësi" — themeli i modelimit të sigurt të gjendjes (p.sh. union-e të dallueshme për gjendjen e reducerit), mbingarkimet e funksionit, dhe llojet e pavlerë (T | null).
Intersection-et përbëjnë llojet bashkë.
Së bashku, ato e bëjnë sistemin e llojit të TypeScript-it mjaft shprehës për të pasqyruar të dhënat reale me saktësi.