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