Trong TypeScript, enum và const enum đều được sử dụng để định nghĩa một tập hợp các giá trị có tên, nhưng chúng có những điểm khác biệt quan trọng về cách hoạt động và cách sử dụng. Dưới đây là sự khác biệt giữa hai loại enum này.
enum Direction {
Up,
Down,
Left,
Right,
}
const enum Direction {
Up,
Down,
Left,
Right,
}
enum Direction {
Up,
Down,
Left,
Right,
}
let direction = Direction.Up; // direction sẽ có giá trị là 0
Mã JavaScript biên dịch sẽ trông như sau:
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 0] = "Up";
Direction[Direction["Down"] = 1] = "Down";
Direction[Direction["Left"] = 2] = "Left";
Direction[Direction["Right"] = 3] = "Right";
})(Direction || (Direction = {}));
var direction = Direction.Up; // direction sẽ có giá trị là 0
const enum Direction {
Up,
Down,
Left,
Right,
}
let direction = Direction.Up; // direction sẽ có giá trị là 0
Mã JavaScript biên dịch sẽ trông như sau:
var direction = 0; // direction sẽ có giá trị là 0
Tóm lại, sự khác biệt chính giữa enum và const enum trong TypeScript nằm ở cách chúng được biên dịch và cách sử dụng. Enum tạo ra một đối tượng tại runtime, trong khi const enum được tối ưu hóa và không tạo ra mã nào tại runtime. Việc chọn sử dụng enum hay const enum phụ thuộc vào nhu cầu của bạn trong việc quản lý mã và tối ưu hóa hiệu suất. Nếu bạn cần một tập hợp các giá trị có thể truy cập tại runtime và có thể có giá trị chuỗi, hãy sử dụng enum. Ngược lại, nếu bạn chỉ cần giá trị số và muốn loại bỏ mã không cần thiết, hãy sử dụng const enum.