🔷 شرح TypeScript

الاستنتاج والتحديد الصريح

التحديد الصريح (Explicit)

تكتب النوع بنفسك بعد اسم المتغيّر بنقطتين ::

let username: string = "سارة";
let age: number = 25;
let isActive: boolean = true;

الاستنتاج التلقائي (Inference)

TypeScript ذكي — يستنتج النوع من القيمة الأوّلية دون أن تكتبه:

let username = "سارة";   // TypeScript يعرف أنه string
let age = 25;            // number

الآن محاولة age = "نص" ستسبب خطأً فوريًّا، رغم أنك لم تحدّد النوع.

متى تستخدم كلًّا منهما؟

الحالةالأفضل
متغيّر بقيمة أوّلية واضحةاترك الاستنتاج
متغيّر بلا قيمة أوّليةحدّد صراحةً
معاملات الدوالحدّد صراحةً دائمًا
القيمة المُرجعة من دالةغالبًا اتركه يستنتج
// استنتاج كافٍ
let total = 100;

// تحديد ضروري (لا قيمة أوّلية)
let result: number;
result = 50;

// معاملات الدوال تحتاج تحديدًا دائمًا
function greet(name: string) {
  return `أهلًا ${name}`;
}

القاعدة الذهبية

اترك TypeScript يستنتج ما يستطيع استنتاجه (أوضح وأقصر)، وحدّد صراحةً عند معاملات الدوال والمتغيّرات بلا قيمة أوّلية.

أخطاء شائعة

  • الإفراط في كتابة الأنواع الواضحة (let x: number = 5) — ضوضاء بلا فائدة.
  • ترك معاملات الدوال بلا نوع فتصبح any ضمنيًّا (يمنعه strict).

🎯 التالي: الأنواع الخاصّة — any وunknown وnever وvoid.