الدوال العامة والقيود (extends والمعاملات الافتراضية)
أنشئ دوال عامة، وأضف قيودًا باستخدام extends، واستخدم معاملات الأنواع الافتراضية لإنشاء واجهات برمجية سهلة الاستخدام.
الدوال العامة والقيود (extends والمعاملات الافتراضية) درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
مقدمة
الهدف: جعل الدوال قابلة لإعادة الاستخدام وآمنة نوعياً باستخدام الأنواع العامة. ستعرّف معاملات الأنواع، وتضيف قيود extends، وتحدّد معاملات الأنواع الافتراضية لتحسين تجربة المطوّر.
النوع العام Identity
عرّف معامل نوع <T>. يستنتج المصرّف قيمة T من الوسائط، لذلك نادراً ما يحدّدها المستدعون صراحةً.
function identity<T>(x: T): T {
return x;
}
const a = identity(42); // T inferred as number
const b = identity("ts"); // T inferred as string
console.log(a, b);القيد باستخدام extends
استخدم extends لفرض بنية معينة، مثل id. ويمكن أن يحتوي T على حقول إضافية بفضل الكتابة البنيوية.
function getId<T extends { id: number }>(item: T): number {
return item.id;
}
getId({ id: 1, name: "Ada" }); // OK (has id)
// getId({ name: "Lin" }); // Error: missing idقيد keyof
قيّد K باستخدام keyof T للسماح فقط بأسماء الخصائص الموجودة في T. ويكون النوع المرجع هو نوع الخاصية T[K].
function pluck<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const user = { id: 7, name: "Neo" };
const v1 = pluck(user, "name"); // string
const v2 = pluck(user, "id"); // number
console.log(v1, v2);معاملات الأنواع الافتراضية
تقلّل معاملات الأنواع الافتراضية من التعليمات المتكررة. ويمكن للمستدعين حذف <T> في الحالات الشائعة، مع إمكانية تغييرها عند الحاجة.
interface Box<T = string> {
value: T;
}
const aBox: Box = { value: "hi" }; // T defaults to string
const nBox: Box<number> = { value: 123 }; // explicit override
console.log(aBox.value, nBox.value);نصائح
نصائح:
- دع الاستنتاج يتولى المهمة؛ وتجنب التعليقات التوضيحية الزائدة لـ T.
- أضف extends فقط عندما يحتاج التنفيذ إلى أعضاء من T.
- وفّر قيماً افتراضية للحالات الشائعة والمريحة.
فحص القيد
فحص سريع: ما الذي يضمنه T extends { id: number }؟
خلاصة
خلاصة: عرّف دوال عامة، وقيّدها باستخدام extends، وحدّد معاملات الأنواع الافتراضية للحفاظ على مرونة واجهات API وسهولة استخدامها.
الأسئلة الشائعة
هل درس «الدوال العامة والقيود (extends والمعاملات الافتراضية)» مجاني؟
نعم — نص درس «الدوال العامة والقيود (extends والمعاملات الافتراضية)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «الدوال العامة والقيود (extends والمعاملات الافتراضية)»؟
أنشئ دوال عامة، وأضف قيودًا باستخدام extends، واستخدم معاملات الأنواع الافتراضية لإنشاء واجهات برمجية سهلة الاستخدام. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «الدوال العامة والقيود (extends والمعاملات الافتراضية)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الدوال العامة والقيود (extends والمعاملات الافتراضية)
- Partial و Readonly و Record و Pick و Omit
- أنواع keyof والوصول المفهرس (مقدمة)