"strict": true في ملف tsconfig.json يفعّل مجموعة من الفحوصات الأكثر صرامة في نفس الوقت. يُوصى بشدة باستخدامه في جميع المشاريع الجديدة — فهو يكتشف الأخطاء التي وجد TypeScript ليمنعها.
{ "compilerOptions": { "strict": true } }
"strict": true في ملف tsconfig.json يفعّل مجموعة من الفحوصات الأكثر صرامة في نفس الوقت. يُوصى بشدة باستخدامه في جميع المشاريع الجديدة — فهو يكتشف الأخطاء التي وجد TypeScript ليمنعها.
{ "compilerOptions": { "strict": true } }
// strictNullChecks — null/undefined are no longer assignable to everything
let name: string = null; // ❌ Error (without strict this compiles, then crashes)
function f(u?: User) { u.name; } // ❌ u is possibly undefined → forces a check
// noImplicitAny — parameters with no inferable type must be annotated
function g(x) {} // ❌ Error: 'x' implicitly has type 'any'
// strictPropertyInitialization — class fields must be initialized
class C { name: string; } // ❌ must init in constructor or mark optional
strictNullChecks هو الخيار الأساسي: فهو يفصل null/undefined عن الأنواع الأخرى، لذلك يفرض المترجم عليك التعامل مع "قد يكون غير موجود" في كل مكان — مما يلغي الفئة الأولى من أخطاء وقت التشغيل ("لا يمكن قراءة خاصية من undefined").
فعّل الخيارات تدريجياً (strictNullChecks أولاً)، وصحح الأخطاء ملف تلو الآخر، بدلاً من تفعيل كل شيء مرة واحدة على مشروع وراثي كبير.
بدون الوضع الصارم، يسمح TypeScript بالعديد من الأنماط غير الآمنة التي يُفترض أن يمنعها (ضمني any، قيم null غير محققة).
الوضع الصارم هو حيث يوفر TypeScript معظم قيمته — تعامل معه كخيار افتراضي وقلل من القيود على الخيارات الفردية فقط لسبب وجيه.