"strict": true in tsconfig.json zet meteen een reeks strengere controles aan. Dit wordt sterk aanbevolen voor alle nieuwe projecten — het vangt bugs die TypeScript juist moet voorkomen.
{
// 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 is de belangrijke: het scheidt null/undefined van andere typen, dus de compiler dwingt je af om "kan ontbreken" overal af te handelen — elimineert de #1 klasse van runtime-fouten ("kan eigenschap van undefined niet lezen").
Zet vlaggen stap voor stap aan (strictNullChecks eerst), los fouten bestand voor bestand op, in plaats van alles in één keer aan te zetten op een groot legacy-project.
Zonder strict mode staat TypeScript nog steeds veel onveilige patronen toe die het juist moet voorkomen (impliciete any, ongecontroleerde nulls).
Strict mode is waar TypeScript het meeste van zijn waarde biedt — behandel het als standaard en verslaap alleen afzonderlijke vlaggen met goede redenen.