~/VibeHandbook
PDF miễn phí

Ngôn ngữ

typescriptlang.org

TypeScript

Nó là gì

Hãy tưởng tượng một trình kiểm tra chính tả gạch chân từ sai ngay khi bạn gõ, trước khi bạn kịp gửi đi. TypeScript làm điều đó cho mã nguồn của bạn. Đây là JavaScript được bổ sung thêm một hệ thống kiểu tĩnh (static type system) — một bộ quy tắc kiểm tra mã của bạn ngay khi bạn viết và cảnh báo lỗi sớm. Nó được biên dịch thành JavaScript thuần, nên chạy được ở bất kỳ đâu JS chạy được — trình duyệt, Node, Deno, Bun, các môi trường — đồng thời bắt được cả một nhóm lỗi trước khi mã của bạn thực sự chạy.

Điểm mạnh

  • Kiểu tĩnh bắt được lỗi gõ nhầm, lỗi liên quan đến null, và sai lệch cấu trúc dữ liệu ngay tại thời điểm biên dịch (compile time).
  • Trải nghiệm trình soạn thảo xuất sắc: tự động hoàn thành, tài liệu hiển thị ngay trong dòng code, tái cấu trúc (refactor) an toàn.
  • Áp dụng dần dần — bạn có thể gắn kiểu nhiều hay ít tùy ý.
  • Cùng một ngôn ngữ dùng được cho cả lẫn , với hệ sinh thái npm (Node Manager) khổng lồ.

Đánh đổi

  • Cần một bước build/biên dịch và file tsconfig.json để cấu hình.
  • Hệ thống kiểu đủ mạnh để trở nên thực sự phức tạp (generics, conditional types) và có thể ngốn khá nhiều thời gian.
  • Việc kiểm tra kiểu chỉ diễn ra trong lúc bạn viết và build code. Một khi chương trình đã thực sự chạy, các kiểm tra đó không còn nữa, nên bạn vẫn cần xác thực tại thời điểm chạy (runtime validation) — một lớp kiểm tra thứ hai soi dữ liệu thực khi chương trình đang chạy, ví dụ dùng Zod — cho dữ liệu đầu vào không đáng tin cậy.
  • Việc thiết lập và công cụ hỗ trợ (tooling) có thể thay đổi liên tục giữa các bundler và runtime khác nhau.

Khi nào nên dùng

Hãy dùng TypeScript cho bất kỳ dự án JavaScript nào không quá đơn giản, đặc biệt khi có nhiều người cùng đóng góp hoặc dự án sẽ tồn tại lâu dài. Đây là lựa chọn mặc định cho các ứng dụng web hiện đại (React, Next.js, SvelteKit), backend Node/edge, và bất cứ nơi nào mà độ an toàn khi tái cấu trúc (refactor) là quan trọng.

Phù hợp với vibe coding

Các trợ lý AI phát huy tốt trong TypeScript vì trình kiểm tra kiểu (type checker) mang lại cho chúng — và cho bạn — một vòng phản hồi nhanh: dán lỗi biên dịch ngược lại và mô hình thường sửa gọn gàng. Hãy định hướng AI bằng cách yêu cầu kiểu dữ liệu chính xác thay vì dùng any, và yêu cầu xác thực tại thời điểm chạy (runtime validation) ở các ranh giới tin cậy (đầu vào (Application Programming Interface), biến môi trường (env vars)). Hãy nói rõ với AI phiên bản runtime và bạn đang dùng để các câu lệnh import và cấu hình được sinh ra khớp đúng. Khi kiểu dữ liệu trở nên rắc rối, hãy yêu cầu mô hình giải thích kiểu được suy luận (inferred type) thay vì nới rộng nó một cách mù quáng.

type User = { id: number; name: string; email?: string };

function greet(user: User): string {
  return `Hi ${user.name}` + (user.email ? ` <${user.email}>` : "");
}

console.log(greet({ id: 1, name: "Ada" }));