union (A | B) "A veya B" anlamına gelir. intersection (A & B) "A ve B aynı anda" anlamına gelir.
ts
= | | ;
: = ;
() { }
union (A | B) "A veya B" anlamına gelir. intersection (A & B) "A ve B aynı anda" anlamına gelir.
= | | ;
: = ;
() { }
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
}
Bir union'ı daraltana kadar, yalnızca union'un her üyesinde bulunan üyelere erişebilirsiniz — derleyici sizi korur.
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'lar nesne türlerini oluşturmak/karıştırmak için harikadır (örneğin, mevcut bir türe prop'lar eklemek).
Union'lar "birden fazla olasılıktan biri" modelini oluşturur — güvenli durum modellemesinin (örneğin reducer durumu için ayırt edici union'lar), fonksiyon aşırı yüklemesinin ve nullable türlerin (T | null) temeli.
Intersection'lar türleri bir araya getirir.
Birlikte, TypeScript'in tür sistemini gerçek verileri tam olarak yansıtacak kadar ifade edici hale getirirler.