Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دمج الأسماء المستعارة للأنواع

جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 35 من 73.

إن أحد أقوى جوانب الأسماء المستعارة للأنواع (type aliases) هو قدرتها على الدمج وإعادة الاستخدام لإنشاء تعريفات أنواع أكثر تطوراً. فبدلاً من تعريف أنواع معقدة من الصفر في كل مرة، يمكنك بناؤها من خلال تجميع أسماء مستعارة للأنواع أصغر وأكثر تركيزاً معاً.

يعزز هذا النهج إعادة استخدام الكود ويجعل تعريفات الأنواع الخاصة بك أكثر قابلية للصيانة. عندما تحتاج إلى تحديث نوع أساسي، فإن جميع الأنواع المركبة التي تستخدمه ترث التغييرات تلقائيًا:

type Email = string;
type Phone = number;

type Contact = {
  name: string;
  email: Email;
  phone: Phone;
};

يمكنك أيضاً دمج الأسماء المستعارة للأنواع (type aliases) ضمن أنواع الاتحاد (union types) لإنشاء هياكل بيانات مرنة. هذا مفيد بشكل خاص عندما قد تقبل خاصية الكائن تنسيقات مختلفة:

type ContactMethod = Email | Phone;

type User = {
  id: number;
  preferredContact: ContactMethod;
};

هذا النهج التركيبي يجعل الكود الخاص بك أكثر تعبيراً وأسهل في الفهم. فبدلاً من رؤية أنواع عامة مثل string أو number، سيفهم المطورون الآخرون على الفور الغرض المقصود من خلال أسماء أنواع ذات معنى مثل Email و Phone.

challenge icon

التحدي

سهل

أنشئ اسم مستعار للنوع (type alias) باسم Username للنوع string.

أنشئ اسم مستعار للنوع باسم UserAge للنوع number.

أنشئ اسم مستعار للنوع باسم ContactMethod يجمع بين Username و UserAge باستخدام نوع الاتحاد (union type).

أنشئ اسم مستعار للنوع باسم UserProfile لكائن يحتوي على الخصائص التالية:

  • id من نوع number
  • displayName من نوع Username
  • preferredContact من نوع ContactMethod

أنشئ اسم مستعار للنوع باسم AdminProfile يجمع بين UserProfile ونوع كائن إضافي يحتوي على خاصية permissions من نوع string باستخدام أنواع التقاطع (intersection types).

الآن قم بإنشاء المتغيرات التالية:

  • أنشئ متغيرًا باسم regularUser من نوع UserProfile مع id بقيمة 1، و displayName بقيمة "john_doe"، و preferredContact بقيمة "john_doe"
  • أنشئ متغيرًا باسم systemAdmin من نوع AdminProfile مع id بقيمة 2، و displayName بقيمة "admin"، و preferredContact بقيمة 25، و permissions بقيمة "full_access"

أنشئ دالة باسم getContactInfo تقبل معاملًا يسمى contact من نوع ContactMethod وتعيد string. استخدم حارس النوع (type guard) للتحقق من النوع وإرجاع ما يلي:

  • إذا كان نصًا (string): "Contact: [contact]"
  • إذا كان رقمًا (number): "Age: [contact]"

اطبع المخرجات التالية في أسطر منفصلة:

  • استدعِ getContactInfo مع regularUser.preferredContact واطبع النتيجة
  • استدعِ getContactInfo مع systemAdmin.preferredContact واطبع النتيجة
  • اطبع systemAdmin.permissions

جرّب بنفسك

// TODO: اكتب كودك هنا

// أنشئ أسماء مستعارة للأنواع (type aliases) لكل من Username و UserAge و ContactMethod و UserProfile و AdminProfile

// أنشئ المتغيرات regularUser و systemAdmin

// أنشئ الدالة getContactInfo

// اطبع المخرجات المطلوبة
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى TypeScript

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت