A union (A | B) ნიშნავს "ან A ან B." An intersection (A & B) ნიშნავს "და ორივე A და B ერთდროულად."
ts
= | | ;
: = ;
() { }
A union (A | B) ნიშნავს "ან A ან B." An intersection (A & B) ნიშნავს "და ორივე A და B ერთდროულად."
= | | ;
: = ;
() { }
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
}
სანამ თქვენ არ narrow გააკეთებთ union-ს, შეგიძლიათ წვდომა მხოლოდ იმ წევრებზე, რომლებიც არის ყველა union-ის წევრებზე — კომპილერი რეკეთ იცავს.
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 უდაოდ კარგია ობიექტის ტიპების შემადგენლობის/მიশთვისთვის (მაგ. თვისებების დამატება არსებულ ტიპზე).
Unions მოდელირებს "რამდენიმე შესაძლებლობიდან ერთი" — უსაფრთხო სახელმწიფოს მოდელირების საფუძველი (მაგ. discriminated unions reducer state-ისთვის), ფუნქციის overloads-ები და nullable types (T | null).
Intersections აერთიანებს ტიპებს ერთად.
ერთად ისინი TypeScript-ის ტიპის სისტემას საკმარისად გამოხატული ხდება რეალური მონაცემების ზუსტად არეკვლისთვის.