0Pricing
TypeScript Academy · درس

المعاملات الاختيارية والافتراضية

تعاملوا مع الوسائط المفقودة باستخدام ? والقيم الافتراضية

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

مرحبًا

يتيح لك TypeScript تحديد معلمات الدوال كاختيارية باستخدام `?` أو تزويدها بقيم افتراضية. وهذا يجعل واجهات برمجة التطبيقات مرنة مع الحفاظ على أمان الأنواع.

المعلمات الاختيارية باستخدام ?

أضف `?` بعد اسم المعلمة لجعلها اختيارية. يصبح نوع المعلمة T | undefined داخل الدالة.
function greet(name: string, greeting?: string): string {
  return (greeting ?? 'Hello') + ', ' + name;
}

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

عيّن قيمة افتراضية باستخدام `=`. يستنتج TypeScript النوع من القيمة الافتراضية، وتصبح المعلمة اختيارية عند موضع الاستدعاء.
function greet(name: string, greeting: string = 'Hello'): string {
  return greeting + ', ' + name;
}
greet('Alice');         // 'Hello, Alice'
greet('Bob', 'Hi');    // 'Hi, Bob'

الاختياري مقابل الافتراضي

يعطي `?` الاختياري قيمة undefined عند حذف المعلمة. أما القيم الافتراضية فتستبدل undefined بقيمة بديلة. وكلاهما يجعل المعلمة غير مطلوبة عند موضع الاستدعاء.
function opt(x?: number) { return x; }     // x: number | undefined
function def(x: number = 0) { return x; }  // x: number

قواعد الترتيب

يجب أن تأتي المعلمات الاختيارية والافتراضية بعد المعلمات المطلوبة في توقيع الدالة.
// Correct order
function create(name: string, role: string = 'user', active?: boolean) {}

// Error: required after optional
// function bad(x?: string, y: string) {}

الاستدعاء باستخدام undefined صراحةً

يمكنك تمرير `undefined` إلى معلمة لها قيمة افتراضية لتفعيل القيمة الافتراضية.
function log(msg: string, level: string = 'info') { console.log(level, msg); }
log('test', undefined); // level is 'info'

المعلمات الاختيارية والتحميلات

يكون استخدام التحميلات أحيانًا أوضح من استخدام المعلمات الاختيارية، ولا سيما عندما يتغير سلوك الدالة بدرجة كبيرة بناءً على وجود المعلمة.

معلمات الكائنات الافتراضية

يمكنك تفكيك معلمة كائن مع تحديد قيم افتراضية لكل خاصية.
function connect({ host = 'localhost', port = 5432 } = {}) {
  return `${host}:${port}`;
}

معلمات المصفوفات الافتراضية

تعمل معلمات المصفوفات الافتراضية بالطريقة نفسها. وفّر مصفوفة فارغة افتراضية لتجنب عمليات التحقق من undefined.
function joinAll(parts: string[], sep: string = ', '): string {
  return parts.join(sep);
}

السلسلة الاختيارية عند مواضع الاستدعاء

إذا كان مرجع الدالة نفسه اختياريًا، فاستخدم السلسلة الاختيارية `?.()` لاستدعائه فقط عند وجوده.
interface Config { onReady?: () => void; }
function init(config: Config) {
  config.onReady?.();
}

نوع المعلمات الاختيارية داخل الدالة

داخل الدالة، تكون المعلمة الاختيارية `x?: T` من النوع `T | undefined`. ويجب تضييق نوعها قبل استخدامها كنوع T.
function process(id?: number) {
  if (id === undefined) return;
  console.log(id * 2); // id is number here
}

تحقق سريع

ما نوع المعلمة المعلنة كـ `count?: number` داخل جسم الدالة؟

مراجعة

استخدم `?` للمعلمات الاختيارية و`= value` للقيم الافتراضية. تكون المعلمات الاختيارية من النوع T | undefined داخل الدالة. وتستبدل القيم الافتراضية undefined تلقائيًا. ويجب أن يأتي كلا النوعين بعد المعلمات المطلوبة.

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

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

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

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

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

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

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

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

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

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

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

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

  1. التعليقات التوضيحية لأنواع المعاملات والقيم المُعادة
  2. المعاملات الاختيارية والافتراضية
  3. معاملات Rest وSpread مع الأنواع
  4. ‏void وnever وتواقيع الدوال
← العودة إلى TypeScript Academy