"strict": true în tsconfig.json activează o familie de verificări mai stricte odată. Este puternic recomandat pentru toate proiectele noi — detectează erorile pe care TypeScript le-a fost creat să prevină.
// 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 este cel important: desparte null/undefined de alte tipuri, deci compilatorul te forțează să gestionezi "ar putea lipsi" peste tot — eliminând clasa #1 de erori în runtime ("cannot read property of undefined").
Activați steagurile incremental (strictNullChecks mai întâi), remediați erorile fișier cu fișier, în loc să activați totul odată pe un proiect legacy mare.
Fără strict mode, TypeScript permite în continuare multe dintre modelele nesigure pe care ar trebui să le prevină (implicit any, nulluri neverificate).
Strict mode este locul în care TypeScript oferă cea mai mare parte a valorii sale — tratează-l ca standard și relaxează doar steagurile individuale cu motiv bun.