object type نوع الكائنات
آخر تحديث: 2026-10-22
object type نوع الكائنات
يصف نوع الكائن بنية الكائن بأزواج "اسم الخاصية: النوع"؛ اكتبه داخل السطر للاستخدام مرة واحدة، وسمِّه بـ interface أو type عند الحاجة إلى إعادة الاستخدام. ويحكم TS بالتوافق وفق "مطابقة الشكل".
| المجموعة | تركيب الأنواع |
|---|---|
| النوع | نوع |
| الوضع الصارم | غير مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
const user: { id: number; name: string; tags?: string[] } = {
id: 1,
name: "Ada",
};
⚙️ المعاملات
| { name: string } | إعلانات الخصائص مفصولة بفواصل منقوطة أو فواصل، ويجوز أن يكون نوع القيمة أي نوع (بما فيه الكائنات المتداخلة) |
|---|---|
| ?/readonly | مُعدِّلا الاختيارية ? والقراءة فقط readonly ينطبقان أيضًا على أنواع الكائنات المكتوبة داخل السطر |
القيمة المُعادة:لا قيمة مُعادة — أنواع الكائنات مفهوم خاص بطبقة الأنواع فقط ولا تُنتج أي كود في وقت التشغيل.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
5 no label
(مخرجات التشغيل بعد التحويل؛ إضافة حقل z غير موجود في النوع إلى point تُطلق خطأ فحص الخصائص الزائدة)
💡 نقاط مهمة
ℹ️ معلومة نظام الأنواع في TS بنيوي: تطابق الشكل يعني التوافق، دون اشتراط وراثة فئة أو واجهة صراحةً ("نمط البطة").
💡 تلميح عند الإشارة إلى البنية في موضعين أو أكثر استخرجها إلى interface/type: فتصبح رسائل الخطأ أقصر ويتحصر التعديل في موضع واحد.
⚠️ تنبيه يُطلق إسناد كائن حرفي "فحص الخصائص الزائدة": فكتابة حقل غير موجود في النوع تسبب خطأً مباشرًا؛ أما إسناده إلى متغير أولًا ثم تمريره فيتجاوز الفحص.
🏷️ تركيب الأنواع ذو صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س ما هو التصنيف البنيوي (نمط البطة)؟
ج توافق الأنواع يُحكم بوجود الخصائص المطلوبة بأنواعها الصحيحة فقط، لا بمصدر الإعلان. فالقيمة {x: 1, y: 2, z: 3} يمكن إسنادها إلى {x: number; y: number}، والخاصية z الزائدة لا تعيق ذلك.
س أيهما أستخدم: نوع كائن مكتوب داخل السطر أم interface؟
ج اكتبه داخل السطر إذا كان بسيطًا ويُستخدم مرة واحدة؛ واستخدم interface/type عند الحاجة إلى إعادة الاستخدام أو التوسيع أو أسماء تظهر في تلميحات IDE.
س كيف أعلّق على معامل دالة يكون كائنًا؟
ج اكتب البنية داخل موضع المعامل مباشرةً: function draw(p: { x: number; y: number }) {}. وإذا كانت البنية معقدة فعرِّف interface أولًا ثم أشر إليه.