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؛ فتحتاج بعدها إلى ?? كقيمة بديلة أو إلى تضييق النوع.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%