0Pricing
TypeScript Academy · درس

الدوال العامة: معاملات الأنواع

أضيفوا معاملات أنواع إلى الدوال لإعادة استخدامها

الدوال العامة: معاملات الأنواع درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

تتيح لك الأنواع العامة كتابة دوال تعمل مع أي نوع مع الحفاظ على أمان الأنواع. وبدلًا من استخدام `any`، تستخدم معامل نوع يُحدَّد عند استدعاء الدالة.

المشكلة التي تحلها الأنواع العامة

تفقد الدالة التي تُرجع `any` معلومات النوع. أما الأنواع العامة فتحافظ على العلاقة بين نوعي الإدخال والإخراج.
// Without generics — loses type info
function first(arr: any[]): any { return arr[0]; }

// With generics — type-safe
function first<T>(arr: T[]): T { return arr[0]; }

صياغة معامل النوع

صرّح بمعامل النوع باستخدام الأقواس الزاوية `` قبل قائمة المعاملات. استخدم T في المعاملات ونوع الإرجاع.
function identity<T>(value: T): T {
  return value;
}
const n = identity(42);       // T is number
const s = identity('hello');  // T is string

استنتاج النوع للدوال العامة

يستنتج TypeScript وسيطة النوع من الوسيطة الفعلية. ونادرًا ما تحتاج إلى تحديدها صراحةً.
function wrap<T>(val: T): T[] { return [val]; }
const nums = wrap(42);    // T inferred as number -> number[]
const strs = wrap('hi');  // T inferred as string -> string[]

معاملات أنواع متعددة

يمكن أن تحتوي الدوال على معاملات أنواع متعددة.
function pair<A, B>(a: A, b: B): [A, B] {
  return [a, b];
}
const p = pair(1, 'hello'); // [number, string]

دوال المصفوفات العامة

تُعد الأنواع العامة ضرورية لدوال أدوات المصفوفات التي تعمل مع أي نوع من العناصر.
function filterNull<T>(arr: (T | null)[]): T[] {
  return arr.filter((x): x is T => x !== null);
}

وسائط الأنواع الصريحة

يمكنك توفير وسائط الأنواع صراحةً عندما يتعذر على TypeScript استنتاجها.
function create<T>(): T | null { return null; }
const user = create<User>(); // T cannot be inferred — must be explicit

الأنواع العامة مقارنةً بـ any

على خلاف `any`، تحافظ الأنواع العامة على العلاقة بين الأنواع عبر الدالة. ويرتبط نوع الإرجاع بنوع الإدخال.
function echo<T>(val: T): T { return val; }
const n: number = echo(42);   // OK
// const s: string = echo(42); // Error — T is number

دوال الأسهم العامة

تستخدم دوال الأسهم الصياغة نفسها، لكنها تحتاج إلى فاصلة في ملفات .tsx للتمييز بينها وبين وسوم JSX.
const identity = <T>(val: T): T => val;
// In .tsx files:
const identity2 = <T,>(val: T): T => val;

إرجاع نوع مختلف

يمكن للدوال العامة استخدام معامل النوع بطرق تحويلية.
function mapArray<T, U>(arr: T[], fn: (item: T) => U): U[] {
  return arr.map(fn);
}
const lengths = mapArray(['hello', 'world'], s => s.length);
// lengths: number[]

معاملات عامة بقيم افتراضية

وفّر نوعًا افتراضيًا لمعامل النوع لجعله اختياريًا.
function createList<T = string>(): T[] { return []; }
const list = createList(); // T defaults to string

فحص سريع

ما نوع الإرجاع الخاص بـ `identity(42)`؟

مراجعة

تستخدم الدوال العامة معاملات الأنواع (T) للحفاظ على العلاقات بين أنواع الإدخال والإخراج. ويستنتج TypeScript وسائط الأنواع تلقائيًا. استخدم الأنواع العامة بدلًا من any لكتابة أدوات قابلة لإعادة الاستخدام وآمنة من ناحية الأنواع.

الأسئلة الشائعة

هل درس «الدوال العامة: معاملات الأنواع» مجاني؟

نعم — نص درس «الدوال العامة: معاملات الأنواع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «الدوال العامة: معاملات الأنواع»؟

أضيفوا معاملات أنواع إلى الدوال لإعادة استخدامها تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الدوال العامة: معاملات الأنواع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الدوال العامة: معاملات الأنواع
  2. الواجهات العامة والأسماء المستعارة للأنواع
  3. قيود الأنواع العامة باستخدام extends
  4. معاملات الأنواع الافتراضية
← العودة إلى TypeScript Academy