"strict": true w tsconfig.json włącza rodzinę bardziej rygorystycznych kontroli na raz. Jest to zdecydowanie rekomendowane dla wszystkich nowych projektów — wyłapuje błędy, które TypeScript ma zapobiegać.
{ "compilerOptions": { "strict": true } }
"strict": true w tsconfig.json włącza rodzinę bardziej rygorystycznych kontroli na raz. Jest to zdecydowanie rekomendowane dla wszystkich nowych projektów — wyłapuje błędy, które TypeScript ma zapobiegać.
{ "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 to najważniejsza opcja: oddziela null/undefined od innych typów, dzięki czemu kompilator zmusza cię do obsługi "może brakować" wszędzie — eliminując klasy błędów #1 w czasie wykonywania ("cannot read property of undefined").
Włączaj flagi przyrostowo (strictNullChecks najpierw), naprawiaj błędy plik za plikiem, zamiast włączać wszystko na raz w dużym projekcie legacy.
Bez strict mode TypeScript nadal pozwala wiele niebezpiecznych wzorów, które ma zapobiegać (niejawny any, niekontrolowany null).
Strict mode to miejsce, gdzie TypeScript dostarcza większość swojej wartości — potraktuj to jako standard i tylko łagodź poszczególne flagi z dobrym powodem.