Khi tắt strictNullChecks, null và undefined được coi là gán được vào mọi kiểu. Bật lên, chúng tách thành kiểu riêng, nên compiler bắt đầu báo những chỗ vốn đã có rủi ro runtime.
Ba nhóm lỗi hay gặp:
1. Object is possibly 'null' — truy cập DOM hoặc kết quả find():
const el = document.getElementById('root') // HTMLElement | null
el.textContent = 'hi' // error2. Type 'undefined' is not assignable to... — property optional được đưa vào chỗ yêu cầu bắt buộc.
3. Biến khai báo chưa gán (let x: string;) rồi dùng trước khi gán.
Hướng sửa đúng, theo thứ tự ưu tiên:
- Narrow bằng if (!el) return hoặc optional chaining el?.textContent — xử lý trường hợp thiếu giá trị một cách tường minh.
- Đặt giá trị mặc định: const name = user.name ?? 'Khách'.
- Chỉ dùng ! (non-null assertion) khi bạn có bằng chứng ngoài hệ thống kiểu rằng giá trị luôn tồn tại — dùng bừa sẽ đưa lỗi trở lại runtime.
Với dự án lớn, cách di chuyển thường dùng là bật cờ cho toàn repo rồi sửa dần theo module, thay vì rải any để dập lỗi.