Menu
CoddyTech
flag Ar iconالعربيةdown icon

استخدام دالة Generic

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

هناك طريقتان لاستخدام دالة عامة: باستخدام وسيطات نوع صريحة أو بالسماح لـ TypeScript باستنتاج النوع تلقائيًا.

إليك كيفية استدعاء دالة عامة باستخدام وسائط نوع صريحة:

const result1 = wrapInObject<string>("hello");
const result2 = wrapInObject<number>(42);

يخبر <string> و<number> TypeScript صراحةً بنوع البيانات الذي يجب استخدامه لـ T. يمنحك هذا تحكمًا كاملًا في معامل النوع.

ومع ذلك، فإن TypeScript ذكي بما يكفي لاستنتاج النوع من الوسيط الذي تمرّره في معظم الحالات:

const result1 = wrapInObject("hello");  // T inferred as string
const result2 = wrapInObject(42);       // T inferred as number

يجعل استدلال الأنواع شيفرتك أنظف وأسهل قراءة مع الحفاظ على أمان الأنواع نفسه. يحلل TypeScript الوسيط ويحدد تلقائيًا ما ينبغي أن تكون عليه T، لذا لا تحتاج إلى كتابة تعليق النوع الصريح إلا إذا أردت تجاوز النوع المستنتج.

challenge icon

التحدي

سهل

تم تزويدك بما يلي من التحدي السابق:

  • الدالة العامة wrapInObject<T> التي تأخذ عنصرًا من النوع T وتُرجع { value: T }

استدعِ الدالة wrapInObject باستخدام كلٍّ من معاملات النوع الصريحة واستنتاج النوع:

استخدام معاملات النوع الصريحة:

  • أنشئ متغيرًا explicitString باستدعاء wrapInObject<string> باستخدام "TypeScript"
  • أنشئ متغيرًا explicitNumber باستدعاء wrapInObject<number> باستخدام 25
  • أنشئ متغيرًا explicitBoolean باستدعاء wrapInObject<boolean> باستخدام false

استخدام استنتاج النوع:

  • أنشئ متغيرًا inferredString باستدعاء wrapInObject باستخدام "Generics" (دع TypeScript يستنتج النوع)
  • أنشئ متغيرًا inferredNumber باستدعاء wrapInObject باستخدام 99 (دع TypeScript يستنتج النوع)
  • أنشئ متغيرًا inferredBoolean باستدعاء wrapInObject باستخدام true (دع TypeScript يستنتج النوع)

اطبع المخرجات التالية:

  • اطبع explicitString.value
  • اطبع explicitNumber.value
  • اطبع explicitBoolean.value
  • اطبع inferredString.value
  • اطبع inferredNumber.value
  • اطبع inferredBoolean.value

جرّب بنفسك

// دالة عامة من التحدي السابق
function wrapInObject<T>(item: T): { value: T } {
    return { value: item };
}

// TODO: اكتب الكود الخاص بك هنا
// أنشئ متغيرات باستخدام وسائط النوع الصريحة
// أنشئ متغيرات باستخدام استدلال النوع

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

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

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

تدرّب بنفسك: Playground لـ TypeScript