0Pricing
TypeScript Academy · درس

معاملات الأنواع الافتراضية

وفّروا أنواعًا بديلة عند عدم تقديم أي وسيطة

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

مرحبًا

توفر معاملات الأنواع الافتراضية نوعًا احتياطيًا عندما لا يحدد المستدعي وسيطة نوع. وتجعل واجهات API العامة أسهل استخدامًا.

الصياغة الافتراضية

أضف `= DefaultType` بعد اسم معامل النوع لتعيين قيمة افتراضية.
interface Container<T = string> {
  value: T;
}
const c: Container = { value: 'hello' }; // T defaults to string
const n: Container<number> = { value: 42 };

القيم الافتراضية في الدوال العامة

يمكن أن تحتوي معاملات أنواع الدوال على قيم افتراضية أيضًا، مع أنها أقل شيوعًا لأن TypeScript يستنتج النوع عادةً.
function createList<T = string>(): T[] { return []; }
const list = createList(); // T is string by default

القيم الافتراضية مع القيود

يمكن أن يمتلك معامل النوع قيدًا وقيمة افتراضية معًا. ويجب أن تستوفي القيمة الافتراضية القيد.
interface Event<T extends object = Record<string, unknown>> {
  type: string;
  payload: T;
}

القيم الافتراضية في المكونات الشبيهة بمكونات React

تشيع معاملات الأنواع الافتراضية في الأنواع العامة لمكتبات واجهات المستخدم الخاصة بخصائص المكونات.
interface SelectProps<T = string> {
  options: T[];
  value: T;
  onChange: (val: T) => void;
}

قيم افتراضية متعددة

يمكن أن يمتلك كل معامل من معاملات الأنواع المتعددة قيمة افتراضية.
type Pair<A = string, B = number> = { first: A; second: B };
const p: Pair = { first: 'hello', second: 42 }; // A=string, B=number

تحتاج معاملات الأنواع اللاحقة إلى قيم افتراضية أيضًا

إذا أردت استخدام قيمة افتراضية لمعامل نوع لاحق، فيجب تحديد جميع المعاملات السابقة التي لا تملك قيمًا افتراضية.
type Map<K = string, V = unknown> = Record<K extends string ? K : string, V>;
const m: Map = {}; // K=string, V=unknown by default

متى يتجاهل TypeScript القيمة الافتراضية

إذا استطاع TypeScript استنتاج وسيطة النوع من السياق، فسيستخدم النوع المستنتج حتى عند توفير قيمة افتراضية.
function wrap<T = string>(val: T): T { return val; }
const n = wrap(42); // T is number, not string (inferred)

التجاوزات الصريحة

يؤدي توفير وسيطة نوع صريحة دائمًا إلى تجاوز القيمة الافتراضية.
interface Box<T = string> { item: T; }
const numBox: Box<number> = { item: 100 }; // T explicitly number

القيم الافتراضية في الأنواع العامة للفئات

يمكن أن تمتلك الفئات العامة معاملات أنواع افتراضية أيضًا.
class Stack<T = unknown> {
  private items: T[] = [];
  push(item: T) { this.items.push(item); }
  pop(): T | undefined { return this.items.pop(); }
}

تجعل القيم الافتراضية المكتبات العامة أسهل استخدامًا

يستخدم مؤلفو المكتبات معاملات الأنواع الافتراضية لتقليل الشيفرة التمهيدية التي يحتاج المستدعون إلى كتابتها في حالات الاستخدام الشائعة.

فحص سريع

بالنظر إلى `interface Box`، ما نوع `.value` في `const b: Box = { value: 99 }`؟

مراجعة

توفر معاملات الأنواع الافتراضية (T = DefaultType) أنواعًا احتياطية عندما لا يحدد المستدعي نوعًا. وتكون أكثر فائدة في الواجهات وتعريفات الفئات وواجهات API الخاصة بالمكتبات لتقليل الشيفرة التمهيدية المطلوبة من المستدعي.

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

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

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

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

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

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

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

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

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

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

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

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

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