</>
⌕
Junior #enum#as-const#union

enum và const object (as const) khác nhau thế nào? Nên dùng cái nào?

⚡ Trả lời nhanh

`enum` tạo ra code runtime (numeric enum còn có reverse mapping), còn string-literal union hoặc `const` object + `as const` chỉ là type, không thêm gì vào bundle. Hiện nay thường ưu tiên const object/union vì tương thích với tooling chỉ xóa type và dễ debug.

Ví dụ

main.ts · sửa được
enumconst object + as const
Code runtimecó (IIFE)object thường
Reverse mappingcó (numeric)không
Nhận string literal thôkhông ("active" không gán được cho string enum)có
Chỉ xóa type (Babel, esbuild, Node strip types)enum cần transformtương thích
Tree shakingkém hơntốt
🃏 Ôn bằng flashcard