Như một lẽ tất yếu của phát triển phần mềm, TypeScript không phải là "lá chắn hoàn hảo" – nó chỉ bắt lỗi tại compile-time, nhưng runtime vẫn có thể crash nếu bạn không hiểu rõ cách type system hoạt động.
Với việc đang viết chủ yếu trên stack React + TypeScript, bài viết nho nhỏ này là một "nỗ lực" để chia sẻ 5 nguyên nhân lỗi TypeScript cơ bản dễ mắc phải, kèm nguyên nhân gốc rễ và cách khắc phục thực tế.
Lỗi #1: Dùng any để "né" lỗi → Mất hết lợi ích TypeScript
Nguyên nhân: any tắt hoàn toàn type checking → bạn mất cảnh báo dù truy cập property không tồn tại. Khắc phục:
Lỗi #2: Quên await trong try-catch → Lỗi không được bắt
Nguyên nhân: fetchData() trả về Promise, try-catch chỉ bắt lỗi sau khi await. Khắc phục :
Lỗi #3: Dùng ! (non-null assertion) quá đà → Cannot read property of null
Nguyên nhân: ! nói với TypeScript: "Tôi chắc chắn nó không null" → nhưng runtime không biết. Khắc phục:
Lỗi #4: Cast mù quáng với as → Vẫn crash dù không lỗi compile
Nguyên nhân: as chỉ ép kiểu tại compile-time,không kiểm tra runtime. Khắc phục:
Lỗi #5: Không handle null/undefined dù bật strictNullChecks
Nguyên nhân: users[0] có thể là undefined nếu mảng rỗng. Khắc phục:
Kết
TypeScript không thay thế được runtime validation – nó chỉ là công cụ cảnh báo sớm. 5 nguyên tắc vàng để tránh lỗi TypeScript:
Không dùng any → dùng unknown + type guard
Luôn await trong try-catch
Không lạm dụng ! → kiểm tra null/undefined
Không as mù quáng → validate trước khi dùng
Luôn xử lý mảng rỗng, API error, network fail
Hy vọng bài viết giúp anh em giảm 80% lỗi runtime dù dùng TypeScript. Nếu bạn từng gặp lỗi "lạ" nào
Thanks for reading. Cheers,
@hyulevo653