التعامل مع 'null' و 'undef'
جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 9 من 73.
يمثل النوع undefined متغيرًا تم التصريح عنه ولكن لم يتم تعيين قيمة له، أو دالة لا ترجع أي شيء بشكل صريح. أما النوع null، من ناحية أخرى، فيمثل غيابًا متعمدًا للقيمة - حيث يتم تعيينه صراحةً للإشارة إلى "عدم وجود قيمة".
let userName: string | null = null; // لا توجد قيمة عن قصد
let userAge: number | undefined; // تم التصريح عنه ولكن لم يتم تعيين قيمة لهتساعد ميزة strict null checking في TypeScript في منع أخطاء وقت التشغيل الشائعة من خلال إجبارك على التعامل مع هذه الحالات بشكل صريح. عندما يكون لديك متغير قد يكون null أو undefined، يجب عليك التحقق من هذه القيم قبل الوصول إلى الخصائص أو الأساليب.
function getLength(text: string | null): number {
if (text === null) {
return 0; // التعامل مع حالة null
}
return text.length; // من الآمن استخدام دوال السلاسل النصية
}التحدي
سهلأنشئ دالة باسم getStringLength تقبل بارامتر من نوع string | null وتُعيد number.
يجب أن تتعامل الدالة مع كلتا الحالتين:
- إذا كان البارامتر عبارة عن سلسلة نصية، فقم بإعادة طولها
- إذا كان البارامتر
null، فقم بإعادة0
اختبر دالتك عن طريق استدعائها بالقيم التالية وطباعة النتائج:
- استدعِ
getStringLength("Hello TypeScript") - استدعِ
getStringLength(null) - استدعِ
getStringLength("TS")
اطبع كل نتيجة في سطر منفصل بالترتيب المذكور أعلاه.
جرّب بنفسك
// TODO: اكتب كودك هنا
// قم بإنشاء دالة getStringLength التي تقبل string | null وتعيد number
// اختبر الدالة بالقيم المطلوبة واطبع النتائجيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع2الأنواع الأساسية
الأنواع الأساسية: str, num, booleanالنوع 'any': مخرج الهروبالنوع 'unknown'التعامل مع 'null' و 'undef'استنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةمراجعة: تدريب على الأنواع الأساسية5الأنواع: الأسماء المستعارة، الاتحادات والتقاطعات
الأسماء المستعارة للأنواع الأساسية (Primitives)أنواع الاتحاد ('|')التعامل مع أنواع الاتحادالأنواع الحرفية (Literal Types)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: Playground لـ TypeScript