Typescript là gì? TypeScript từ bản chất đến runtime.
Tác giả: Flop Dev
Đăng nhập để đánh giá bài viết

TypeScript không làm code bạn chạy đúng hơn.
Nó chỉ giúp bạn sai ít hơn trước khi code chạy.
Mở đầu – Hiểu sai phổ biến
Rất nhiều dev đang hiểu sai:
TypeScript giúp code “an toàn runtime”
TypeScript chạy cùng Node.js
TypeScript giống Java / C# (có type thật)
Thực tế:
TypeScript không tồn tại ở runtime.
Bản chất về TypeScript
TypeScript thực chất là:
TypeScript = Type Checker + TranspilerPipeline:
.ts (source)
↓
Parser → AST
↓
Type Checker
↓
Transformer
↓
.js (output)
↓
V8 (Node.js / Browser)1. Type Checker (Trình kiểm tra kiểu tĩnh)
Đây là "bộ não" giúp TypeScript phát hiện lỗi ngay trong lúc bạn đang viết code, thay vì đợi đến khi chạy ứng dụng mới biết.
Phát hiện lỗi sớm (Static Analysis): Nó kiểm tra các lỗi logic về kiểu dữ liệu. Ví dụ: Bạn không thể thực hiện phép tính cộng một Số với một Object.
Hệ thống Type Annotations: Bạn sử dụng các cú pháp như
: string,: number,interface, hoặctypeđể mô tả cấu trúc dữ liệu.Hỗ trợ IDE: Nhờ có Type Checker, các trình soạn thảo như VS Code có thể gợi ý code (IntelliSense) chính xác 100%, giúp bạn biết rõ một object có những thuộc tính nào.
Runtime Zero Cost: Khi chương trình thực thi, toàn bộ phần kiểm tra kiểu này sẽ bị loại bỏ. Nó không gây tốn tài nguyên hệ thống khi ứng dụng chạy.
2. Transpiler (Trình chuyển đổi mã)
Trình duyệt (Chrome, Firefox,...) và Node.js không thể đọc trực tiếp file .ts. Chúng chỉ hiểu JavaScript. Transpiler đóng vai trò là "máy dịch".
Type Stripping (Xóa bỏ kiểu): Nhiệm vụ chính của nó là xóa sạch các cú pháp của TypeScript (như
interface,enum,type) để biến nó thành JavaScript thuần túy.Down-leveling (Hạ cấp phiên bản): Transpiler có thể chuyển đổi mã JavaScript hiện đại (ES6+) về các phiên bản cũ hơn (như ES5) để ứng dụng có thể chạy được trên các trình duyệt lâu đời.
Tương thích: Đảm bảo mã nguồn bạn viết bằng những tính năng mới nhất vẫn hoạt động ổn định ở mọi môi trường.
LAB 1 – Type bị “xóa sổ” (Type Erasure)
Code
function greet(name: string): string {
return "Hello " + name;
}
console.log(greet("Dev"));

Sau khi compile

Insight
stringbiến mất hoàn toànKhông có metadata type nào tồn tại
👉 Đây gọi là:
Type Erasure
3. LAB 2 – TypeScript không bảo vệ runtime
Code
function greet(name: string): string {
return "Hello " + name;
}
console.log(greet(123));
Runtime
https://i.postimg.cc/7hqL9ZJh/2.png
Hello 123
Insight
TypeScript chỉ cảnh báo
Bạn có thể bypass
👉 Runtime vẫn chạy như JavaScript bình thường

Flop Dev
Editor tại kilobai.com