"strict": true dans tsconfig.json active une famille de vérifications plus strictes à la fois. C'est fortement recommandé pour tous les nouveaux projets — il détecte les bugs que TypeScript est censé prévenir.
// 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 est le principal : il sépare null/undefined des autres types, le compilateur vous force donc à gérer « pourrait être absent » partout — éliminant la classe principale d'erreurs d'exécution (« impossible de lire la propriété de undefined »).
Activez les drapeaux progressivement (strictNullChecks d'abord), corrigez les erreurs fichier par fichier, plutôt que d'activer tout à la fois sur un grand projet hérité.
Sans le mode strict, TypeScript permet toujours de nombreux modèles non sécurisés qu'il est censé prévenir (any implicite, null non vérifiés).
Le mode strict est là où TypeScript fournit la plupart de sa valeur — traitez-le comme la valeur par défaut et ne relâchez les drapeaux individuels que pour une bonne raison.