Quy tắc TypeScript & Naming
Quy tắc TypeScript
Không sử dụng any
Không sử dụng kiểu any. Mọi giá trị cần có type cụ thể (primitive, object type, union, generic). Nếu chưa biết chính xác type thì dùng unknown và narrow (type guard) trước khi dùng.
Ví dụ:
// ❌ Tránh
function parse(data: any) {
return data.value;
}
// ✅ Tốt
type ApiResponse = { value: string };
function parse(data: unknown): string {
if (
typeof data === "object" &&
data !== null &&
"value" in data &&
typeof (data as ApiResponse).value === "string"
) {
return (data as ApiResponse).value;
}
throw new Error("Invalid data");
}
Không sử dụng var, chỉ const hoặc let
Chỉ dùng const và let. Không dùng var (tránh hoisting và scope không rõ ràng).
Ví dụ:
// ❌ Tránh
var count = 0;
// ✅ Tốt
const count = 0;
let total = 0;
Naming Convention
| Đối tượng | Quy ước | Ví dụ |
|---|---|---|
| Type | PascalCase | Customer, OrderItem |
| Biến / Hàm | camelCase | customerName, getUser |
| Hằng số | UPPER_CASE | MAX_PAGE_SIZE, API_URL |
Ví dụ:
const MAX_ITEMS = 100;
const apiBaseUrl = process.env.API_URL;
type Customer = {
id: string;
name: string;
};
function getCustomerById(id: string) {
return customers.find((c) => c.id === id);
}