🚀 إتقان أنواع الكائنات Object Types في TypeScript

بعد أن تعلمنا الأساسيات، حان الوقت لننتقل إلى واحدة من أهم الركائز في لغة TypeScript وهي أنواع الكائنات (Object Types).

في لغة JavaScript العادية، يمكنك إنشاء كائن وإضافة أي خصائص إليه دون قيود، ولكن في TypeScript، نحن نريد "ضبط" هذا الكائن لضمان أننا نستخدم الخصائص الصحيحة وبأنواع بيانات دقيقة. هذا ما يسمى بـ Type Checking.


🧐 ما هو الـ Object Type؟

ببساطة، الـ Object Type هو طريقة لإخبار TypeScript: "هذا الكائن يجب أن يحتوي على هذه الخصائص المحددة، وكل خاصية يجب أن تكون من هذا النوع من البيانات".

تخيل أنك تصمم نظاماً لإدارة المستخدمين؛ لا تريد أن ينسى المبرمج إضافة "البريد الإلكتروني" أو أن يضع "رقم الهاتف" في خانة "الاسم". هنا يأتي دور تحديد أنواع الكائنات.


🛠️ كيف نقوم بتعريف نوع الكائن؟

لتعريف نوع الكائن، نقوم بكتابة اسم الكائن، ثم نضع قوسين متعرجين {} وبداخلها نحدد أسماء الخصائص ونوع كل واحدة منها.

لنلقِ نظرة على هذا المثال البسيط:

// تعريف كائن يمثل مستخدماً
let user = {
    userName: "Ahmed", // string
    age: 25,            // number
    isActive: true      // boolean
};

في المثال السابق، قام TypeScript تلقائياً بعمل (Inference) أي استنتاج للأنواع. ولكن لكي نكون محترفين ونحدد الأنواع بشكل صريح (Explicitly)، نكتبها بهذا الشكل:

// تحديد الأنواع بشكل صريح للكائن
let user: {
    userName: string,
    age: number,
    isActive: boolean
};

// الآن نقوم بإسناد القيم للكائن
user = {
    userName: "Ali",
    age: 30,
    isActive: false
};

⚠️ ماذا يحدث لو أخطأنا في النوع؟

هذا هو سحر TypeScript! إذا حاولت إضافة خاصية غير موجودة في التعريف، أو حاولت وضع قيمة من نوع خاطئ، سيقوم المحرر بتنبيهك فوراً قبل تشغيل الكود.

شاهد هذا المثال الموضح للخطأ:

let car: {
    brand: string,
    year: number
};

// ✅ صحيح: الالتزام بالأنواع المحددة
car = {
    brand: "Toyota",
    year: 2022
};

// ❌ خطأ: محاولة وضع نص في خانة السنة (number)
car = {
    brand: "Honda",
    year: "2023" // سيظهر خطأ هنا لأن النوع يجب أن يكون number
};

// ❌ خطأ: إضافة خاصية غير معرفة مسبقاً
car = {
    brand: "Ford",
    year: 2020,
    color: "Red" // سيظهر خطأ لأن خاصية color غير موجودة في التعريف
};

💡 نصائح سريعة عند التعامل مع Object Types

  1. الدقة: دائماً حدد الأنواع التي تتوقعها بدقة لتجنب الأخطاء المنطقية في برنامجك.
  2. التنظيم: عندما يكون الكائن كبيراً، اجعل تعريف الأنواع واضحاً ومنظماً.
  3. البساطة: في هذه المرحلة، ركز فقط على الخصائص الأساسية (Strings, Numbers, Booleans) داخل الكائنات.

🎓 ملخص سريع

  • الـ Object Type يحدد شكل الكائن (الخصائص وأنواعها).
  • يساعدنا في منع إضافة خصائص غير مرغوب فيها.
  • يمنع وضع قيم خاطئة في الخصائص المحددة.
  • يجعل الكود قابلاً للقراءة والصيانة بشكل أكبر.