"strict": true dalam tsconfig.json mengaktifkan sekaligus sekelompok pemeriksaan yang lebih ketat. Ini sangat disarankan untuk semua proyek baru — ia menangkap bug yang TypeScript dirancang untuk mencegah.
// 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 adalah yang besar: ia memisahkan null/undefined dari jenis lain, jadi kompiler memaksa Anda menangani "mungkin hilang" di mana-mana — menghilangkan kelas #1 kesalahan runtime ("tidak dapat membaca properti undefined").
Aktifkan bendera secara bertahap (strictNullChecks terlebih dahulu), perbaiki kesalahan file demi file, daripada mengaktifkan semuanya sekaligus pada proyek legacy yang besar.
Tanpa mode ketat, TypeScript masih memungkinkan banyak pola tidak aman yang dimaksudkannya untuk mencegah (implicit any, null yang tidak diperiksa).
Mode ketat adalah tempat TypeScript memberikan sebagian besar nilainya — perlakukan sebagai default dan hanya santai individual bendera dengan alasan yang baik.