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 أولًا ثم أشر إليه.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%