null / undefined null و undefined
آخر تحديث: 2026-10-22
null / undefined null و undefined
تعني null "الفراغ المتعمَّد"، بينما تعني undefined "لم تُسند قيمة بعد / غير موجود". بعد تفعيل strictNullChecks يصيران نوعين مستقلين، ويجب معالجة القيمتين الخاليتين قبل استخدامهما كقيم عادية.
| المجموعة | الأنواع الأساسية |
|---|---|
| النوع | نوع |
| الوضع الصارم | مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
let nickname: string | null = null;
if (nickname !== null) {
nickname.toUpperCase(); // لا يمكن استخدامه إلا بعد استبعاد null
}
let maybe = list.find(x => x.ok); // undefined تعني عدم العثور
⚙️ المعاملات
| a?.b | السلسلة الاختيارية ?.: عندما يكون الطرف الأيسر null/undefined تقصر نتيجة التعبير كلها إلى undefined دون رمي خطأ |
|---|---|
| a ?? b | دمج القيم الخالية ??: يأخذ القيمة الافتراضية في الطرف الأيمن عندما يكون الأيسر null/undefined؛ ولا تُتجاهل القيمتان 0 و "" |
القيمة المُعادة:لا قيمة مُعادة — null/undefined تعليقات أنواع أساسية ولا تُنتج أي كود في وقت التشغيل.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
Ada guest
0
(مخرجات التشغيل بعد التحويل؛ عند تفعيل strictNullChecks فإن استدعاء missing.length مباشرةً يؤدي إلى خطأ ترجمة)
💡 نقاط مهمة
⚠️ تنبيه عند إغلاق strictNullChecks يمكن إسناد null/undefined إلى أي نوع، فيصبح الأمان من مؤشرات null موكولًا للحظ. فعّل strict في المشاريع الجديدة حتمًا.
💡 تلميح النوعان ?. و ?? ثنائي ذهبي لمعالجة القيم القابلة للفراغ: user?.address?.city ?? "unknown" يجمع الجلب والقيمة البديلة في سطر واحد.
ℹ️ معلومة لا يمرر ?? القيمة من اليسار إلا عندما تكون null/undefined، بينما يحفظ 0 و false و "" — وهذا الفارق الجوهري بينه وبين ||.
🏷️ الأنواع الأساسية ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س ما الفرق بين ?? و ||؟
ج يعامل || كل قيمة خاطئة (0 و "" و false) وكأنها فراغ فيأخذ الطرف الأيمن؛ بينما يكتفي ?? بقيمتي null/undefined. عند ضبط القيم الافتراضية استخدم ?? في معظم الأحوال، وإلا فستُستبدل قيمتا 0 والسلسلة الفارغة خطأً.
س كيف نميّز بين null و undefined دلاليًا؟
ج الاصطلاح: undefined يعني غياب القيمة بعد (معامل لم يُمرَّر أو خاصية غير موجودة)، وnull يعني الإفراغ المتعمَّد (مُحيت القيمة). يكفي أن تلتزم أسلوبًا واحدًا في كل واجهة برمجية.
س ماذا يصبح نوع القيمة بعد السلسلة الاختيارية؟
ج يصبح T | undefined: فمتى كان أي حلقة في السلسلة قد تكون فراغًا، حملت النتيجة undefined؛ فتحتاج بعدها إلى ?? كقيمة بديلة أو إلى تضييق النوع.