Union (A | B) tarkoittaa "joko A tai B." Intersection (A & B) tarkoittaa "sekä A että B samaan aikaan."
ts
= | | ;
: = ;
() { }
Union (A | B) tarkoittaa "joko A tai B." Intersection (A & B) tarkoittaa "sekä A että B samaan aikaan."
= | | ;
: = ;
() { }
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
}
Kunnes rajaat unionia, voit päästä käsiksi vain jäseniin, jotka ovat läsnä jokaisessa unionin jäsenessä — kääntäjä suojelee sinua.
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 ovat loistavia objektityyppien koostamiseen/sekoittamiseen (esim. rekvisiitta olemassa olevaan tyyppiin).
Unionit mallintavat "yhtä useista mahdollisuuksista" — turvallisen tilannesimulaation perusta (esim. erottelukelpoiset unionit reduktiollan tilasta), funktioiden ylikuormitus ja nullable-tyypit (T | null).
Intersections kokoavat tyyppejä yhteen.
Yhdessä ne tekevät TypeScriptin tyyppijärjestelmän ilmaisukyvystään riittävän tarkaksi todellisten tietojen tarkkaan heijastamiseen.