القيم الافتراضية في التفكيك
اجمعوا القيم الافتراضية مع تعليقات الأنواع بأمان
القيم الافتراضية في التفكيك درس مجاني في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع تفكيك الكائنات
- تفكيك المصفوفات والصفائف
- القيم الافتراضية في التفكيك
- أنماط التفكيك المتداخلة