TypeScript là gì?
TypeScript là JavaScript có thêm hệ thống kiểu (type system). Nó là một
superset của JavaScript — mọi code JS hợp lệ đều là code TypeScript hợp lệ —
nhưng cho phép khai báo kiểu dữ liệu để trình biên dịch bắt lỗi trước khi
chạy, thay vì để lỗi rơi vào runtime. Site này (và các component .astro)
đều viết bằng TypeScript.
Vấn đề nó giải quyết
JavaScript thuần không kiểm tra kiểu dữ liệu, nên các lỗi như gọi nhầm field,
truyền sai kiểu tham số, quên xử lý null… chỉ lộ ra khi chạy thực tế
(hoặc tệ hơn, khi đã lên production). TypeScript bắt phần lớn các lỗi này
ngay lúc viết code, trong editor.
Cú pháp cơ bản
// Khai báo kiểu cho biến, tham số, giá trị trả về
function greet(name: string): string {
return `Hello, ${name}`;
}
// Interface / type mô tả hình dạng object
interface Post {
title: string;
pubDate: Date;
tags: string[];
}
// Union type — giá trị có thể là một trong nhiều kiểu
type Locale = "en" | "vi";
Type inference
Không phải lúc nào cũng cần khai báo kiểu tường minh — TypeScript tự suy ra kiểu dựa vào giá trị gán:
const count = 3; // TypeScript tự hiểu đây là number
Vì sao dùng trong site này
- Content Collections của Astro dùng schema Zod để validate frontmatter
Markdown, và tự sinh ra type cho
post.data.title,post.data.pubDate… — gõ nhầm field sẽ báo lỗi ngay lúc build, không phải khi site đã deploy. - Các hàm dùng chung như
src/lib/content.tskhai báo kiểu rõ ràng (Locale,CollectionEntry<"blog">…), giúp autocomplete chính xác khi viết component mới. - Chạy
npm run buildsẽ luônastro checktrước — nếu có lỗi type, build sẽ dừng lại thay vì âm thầm deploy code lỗi.
Khi nào TypeScript đáng giá
Với project nhỏ, một file thì JS thuần cũng ổn. Nhưng khi code lớn dần, có nhiều người cùng sửa, hoặc dữ liệu đi qua nhiều lớp (Markdown → component → render), type system giúp tránh rất nhiều lỗi vặt mà lẽ ra phải phát hiện bằng cách chạy thử thủ công.
Tài liệu tham khảo
Tài liệu chính thức: typescriptlang.org/docs