0Pricing
TypeScript Academy · درس

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

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

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

ملء الفراغات

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

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

اكتب = value بعد الارتباط لمنحه قيمة بديلة. فإذا كانت الخاصية غير موجودة أو تساوي undefined، تُستخدم القيمة الافتراضية بدلًا منها.

const opts: { count?: number } = {}
const { count = 0 } = opts
console.log(count) // 0

القيم الافتراضية مع الخصائص الاختيارية

تتوافق القيم الافتراضية طبيعيًا مع الخصائص الاختيارية (?). فتزيل القيمة الافتراضية حالة undefined، ولذلك يصبح المتغير الناتج من النوع غير الاختياري.

interface Opts { retries?: number }
function connect(opts: Opts) {
  const { retries = 3 } = opts
  // retries is number, not number | undefined
  return retries * 2
}
console.log(connect({}))

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

إذا لم تحدد النوع، يستنتج TypeScript نوع المتغير من القيمة الافتراضية. وهنا تجعل 0 المتغير count من نوع number.

const settings: { count?: number; label?: string } = { label: "hi" }
const { count = 0, label = "none" } = settings
console.log(count, label) // 0 hi

القيمة undefined وحدها تُفعّل الافتراضي

هذه نقطة دقيقة: تُطبّق القيم الافتراضية على undefined فقط، وليس على القيم الأخرى التي تُعدّ خاطئة مثل 0 أو "" أو null. وتنتقل هذه القيم كما هي دون تغيير.

const { x = 10 } = { x: 0 }
console.log(x) // 0, not 10 — 0 is not undefined
const { y = 10 } = { y: undefined as number | undefined }
console.log(y) // 10

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

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

function draw({ x = 0, y = 0 }: { x?: number; y?: number }) {
  return x + "," + y
}
console.log(draw({ x: 5 })) // 5,0

تعيين قيمة افتراضية للمعامل بأكمله

للسماح للمتصلين بحذف كائن الوسائط بالكامل، امنح المعامل نفسه قيمة افتراضية هي {}. ومن دون ذلك، سيؤدي الاستدعاء بلا وسيط إلى إلقاء خطأ.

function draw({ x = 0, y = 0 }: { x?: number; y?: number } = {}) {
  return x + "," + y
}
console.log(draw()) // 0,0

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

يمكنك إعادة التسمية وتعيين قيمة افتراضية في ارتباط واحد: أعد التسمية أولًا، ثم أضف القيمة الافتراضية بعد الاسم الجديد.

const { count: total = 0 } = { } as { count?: number }
console.log(total) // 0

القيم الافتراضية المحسوبة

يمكن أن تكون القيمة الافتراضية أي تعبير، حتى تعبيرًا يشير إلى ارتباطات سابقة. ويُقيّم التعبير بشكل كسول — أي فقط عندما تكون القيمة مفقودة فعلًا.

function make({ width = 100, height = width }: { width?: number; height?: number } = {}) {
  return width + "x" + height
}
console.log(make({ width: 50 })) // 50x50

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

تعمل القيم الافتراضية في تفكيك المصفوفات أيضًا، إذ تُطبّق على كل موضع عندما يكون العنصر مفقودًا أو يساوي undefined.

const [a = 1, b = 2, c = 3] = [10, undefined]
console.log(a, b, c) // 10 2 3

متى تتألق القيم الافتراضية

تُعدّ القيم الافتراضية مثالية لكائنات الخيارات: إذ يحدد المتصلون ما يهمهم فقط، وتملأ الدالة بقية القيم البديلة المعقولة. كما أنها تزيل undefined من الأنواع المستنتجة، ما يبسّط جسم الدالة.

interface Config { debug?: boolean; level?: number }
const init = ({ debug = false, level = 1 }: Config = {}) => debug ? level : 0
console.log(init({ debug: true, level: 5 }))

تحقق سريع

اختبر مدى فهمك للقيم الافتراضية في التفكيك.

مراجعة

تُطبّق القيم الافتراضية في التفكيك (= fallback) فقط عندما تكون القيمة مفقودة أو تساوي undefined — وليس أبدًا مع القيم الأخرى التي تُعدّ خاطئة. فهي تزيل undefined من أنواع الخصائص الاختيارية، ويمكن استنتاجها أو تحديدها، وتدعم إعادة التسمية، وقد تشير إلى ارتباطات سابقة. وبالنسبة إلى كائنات الخيارات، عيّن للمعامل القيمة الافتراضية {} حتى يتمكن المتصلون من حذفه بالكامل.

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

هل درس «القيم الافتراضية في التفكيك» مجاني؟

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

ماذا ستتعلم في «القيم الافتراضية في التفكيك»؟

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

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

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

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

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

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

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

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

  1. أنواع تفكيك الكائنات
  2. تفكيك المصفوفات والصفائف
  3. القيم الافتراضية في التفكيك
  4. أنماط التفكيك المتداخلة
← العودة إلى TypeScript Academy