0Pricing
TypeScript Academy · درس

null وundefined والتحقق الصارم من null

تعامَل مع null وundefined بأمان باستخدام الوضع الصارم

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

مرحبًا

يمثل null وundefined في JavaScript مصدرين شائعين لأخطاء وقت التشغيل. وتجبرك فحوصات null الصارمة في TypeScript على التعامل معهما صراحةً.

null مقابل undefined

تعني `undefined` أن متغيرًا أُعلن عنه لكنه لم يُسنَد إليه شيء. أما `null` فتعني غياب القيمة عن قصد. وكلاهما نوع مستقل في TypeScript.
let a: undefined = undefined;
let b: null = null;

من دون فحوصات null الصارمة

من دون `strictNullChecks`، يكون null وundefined نوعين فرعيين من كل نوع. وهذا هو الإعداد الافتراضي في الإصدارات القديمة من TypeScript، وهو غير آمن عمومًا.
// strictNullChecks: false (unsafe default)
let name: string = null; // allowed — dangerous!

تمكين فحوصات null الصارمة

مع `strictNullChecks: true`، المضمّن في `strict`، لا يمكن إسناد null وundefined إلا إلى نوعيهما أو إلى أنواع اتحاد تصرّح بهما صراحةً.
// strictNullChecks: true
let name: string = null; // Error!
let maybeName: string | null = null; // OK

الخصائص الاختيارية

تكون خصائص الكائنات المحددة بالرمز `?` من النوع `T | undefined` ضمنيًا. ويجب عليك التعامل مع حالة عدم وجودها.
interface Config {
  host: string;
  port?: number; // number | undefined
}

const c: Config = { host: 'localhost' };
console.log(c.port?.toString()); // optional chaining

تضييق الأنواع القابلة لأن تكون null

استخدم فحصًا بواسطة if لتضييق اتحاد يتضمن null أو undefined قبل الوصول إلى الخصائص.
function greet(name: string | null): string {
  if (name === null) return 'Guest';
  return 'Hello, ' + name;
}

التسلسل الاختياري (?.)

يعيد العامل `?.` القيمة undefined مباشرةً إذا كان الطرف الأيسر null أو undefined، مما يجنبك تعطل البرنامج وقت التشغيل.
const user = getUser();
const city = user?.address?.city; // undefined if any step is null

الدمج عند غياب القيمة (??)

يعيد العامل `??` الطرف الأيمن فقط عندما يكون الطرف الأيسر null أو undefined، بخلاف `||` الذي يُفعّل عند أي قيمة falsy.
const port = config.port ?? 3000; // 3000 if port is null/undefined
const label = name ?? 'Anonymous';

عامل التأكيد بعدم وجود null (!)

يخبر العامل اللاحق `!` TypeScript بأنك متأكد من أن القيمة ليست null أو undefined. استخدمه فقط عندما تكون متأكدًا تمامًا.
const el = document.getElementById('root')!;
el.textContent = 'Loaded'; // no null check needed

إرجاع null مقابل undefined

فضّل إرجاع `null` للدلالة على نتيجة فارغة مقصودة، و`undefined` للقيم المفقودة أو الاختيارية. والتزم بالاتساق داخل قاعدة التعليمات البرمجية.
function findUser(id: number): User | null {
  return db.find(u => u.id === id) ?? null;
}

يمنع strictNullChecks خطأ المليار دولار

وصف Tony Hoare قيمة null بأنها «خطأ المليار دولار». وتمنع strictNullChecks أعطال null وundefined من خلال إلزامك بالتعامل مع هذه القيم صراحةً.

تحقق سريع

ماذا يعيد العامل `??` (الدمج عند غياب القيمة) من طرفه الأيمن؟

مراجعة

فعّل strictNullChecks لمنع أخطاء null وundefined. واستخدم أنواع الاتحاد للسماح بالقيم القابلة لأن تكون null، والتسلسل الاختياري (?.) للوصول الآمن إلى القيم المتداخلة، والدمج عند غياب القيمة (??) لتوفير قيم افتراضية.

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

هل درس «null وundefined والتحقق الصارم من null» مجاني؟

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

ماذا ستتعلم في «null وundefined والتحقق الصارم من null»؟

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

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

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

كم من الوقت يستغرق درس «null وundefined والتحقق الصارم من null»؟

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

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

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

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

  1. الأنواع البدائية: string وnumber وboolean
  2. نوع any ولماذا يجب تجنّبه
  3. unknown مقابل any: الخيار الأكثر أماناً
  4. null وundefined والتحقق الصارم من null
← العودة إلى TypeScript Academy