A & B أنواع التقاطع
آخر تحديث: 2026-10-22
A & B أنواع التقاطع
يدمج النوع التقاطعي A & B خصائص أنواع متعددة في واحد: فالقيمة يجب أن تحقق A و B معًا. وهو مناسب لدمج واجهات صغيرة بأسلوب "المزج".
| المجموعة | تركيب الأنواع |
|---|---|
| النوع | نوع |
| الوضع الصارم | غير مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
type A = { id: number };
type B = { name: string };
type AB = A & B; // يملك id و name معًا
⚙️ المعاملات
| A & B | يربط & أي عدد من الأنواع؛ وكلما زاد الأعضاء اشتدت القيود (وتضاقت مدى النوع) |
|---|
القيمة المُعادة:لا قيمة مُعادة — أنواع التقاطع مفهوم خاص بطبقة الأنواع فقط وتختفي بعد الترجمة.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
7 login 2026-01-01T09:00:00Z
(مخرجات التشغيل بعد التحويل؛ إغفال حقل timestamp من audit يؤدي إلى خطأ ترجمة — فالتقاطع يشترط اكتمال كل الأعضاء)
💡 نقاط مهمة
ℹ️ معلومة التقاطع "و" والاتحاد "أو": فالنوع A & B يطلب تحقق الطرفين معًا (أضيق)، بينما يكفي في A | B تحقق أحدهما (أوسع).
⚠️ تنبيه تقاطع الأنواع الأصلية يعطي never (فلا أعضاء للتعبير string & number)؛ وعندما تختلف أنواع خصائص الاسم نفسه يصبح نوع الخاصية تقاطع الطرفين، وهو غالبًا never أيضًا.
💡 تلميح التركيب مع أنواع الأدوات من نقاط قوة التقاطع: فصيغة User & Partial<User> من "الأصل + تجاوز جزئي" موجزة ومباشرة.
🏷️ تركيب الأنواع ذو صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س ما الفرق بين أنواع التقاطع ووراثة interface بـ extends؟
ج النتيجة متشابهة والآلية مختلفة: ترث extends أشكال interface/الأنواع وتخطئ عند التعارض؛ بينما يركّب & أي تعبيرات نوعية (بما فيها نتائج أدوات الأنواع) ويحل التعارض صامتًا إلى never. استخدم extends لرسائل خطأ أوضح.
س ما هو string & number؟
ج هو never: فلا قيمة تكون سلسلة نصية وعددًا معًا. تقاطع الأنواع الأصلية يكون never في معظم الأحوال، ويمكن الاستفادة من ذلك في "التعبير عن الاستحالة" في عمليات الأنواع.
س ماذا يحدث إذا اختلف نوع خاصية الاسم نفسه في واجهتين متقاطعتين؟
ج يصبح نوع الخاصية تقاطع نوعي الطرفين. فالتعبير string & number هو never مباشرةً، فتفشل كل عمليات الإسناد اللاحقة؛ فإذا أردت دمج واجهات بالتقاطع فتحقق أولًا من تطابق أنواع الحقول.