الاتحاد (A | B) يعني "إما A أو B." التقاطع (A & B) يعني "كل من A و B في نفس الوقت."
ts
= | | ;
: = ;
() { }
الاتحاد (A | B) يعني "إما A أو B." التقاطع (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
}
حتى تقوم بـ تضييق اتحاد، يمكنك الوصول فقط إلى الأعضاء الموجودة على كل عضو من أعضاء الاتحاد — المترجم يحميك.
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
التقاطعات رائعة لتكوين/مزج أنواع الكائنات (مثل إضافة خصائص إلى نوع موجود).
الاتحادات تمثل "أحد عدة احتمالات" — أساس نمذجة الحالة الآمنة (مثل الاتحادات المميزة لحالة المخفض)، وحمل الدوال، والأنواع القابلة للقيمة الفارغة (T | null).
التقاطعات تجمع الأنواع معاً.
معاً يجعلان نظام نوع TypeScript معبراً بما يكفي لعكس البيانات الحقيقية بدقة.