Cách sử dụng Enum trong TypeScript từng bước
Enum trong TypeScript là một cách để định nghĩa một tập hợp các hằng số được đặt tên có thể được sử dụng để biểu diễn một tập hợp các giá trị liên quan. Chúng làm cho mã dễ đọc và dễ bảo trì hơn bằng cách đặt tên thân thiện cho các giá trị này. Hướng dẫn này sẽ hướng dẫn bạn từng bước sử dụng enum trong TypeScript, bao gồm các kiểu, lợi ích và ví dụ thực tế của chúng.
Enum là gì?
enum (viết tắt của "enumeration") là một kiểu dữ liệu đặc biệt trong TypeScript cho phép bạn định nghĩa một tập hợp các hằng số được đặt tên. Các hằng số được đặt tên này có thể biểu diễn các giá trị số hoặc chuỗi, giúp mã của bạn mô tả rõ hơn và ít lỗi hơn.
Các loại Enum trong TypeScript
Có ba loại enum trong TypeScript:
- Enum số
- Chuỗi Enum
- Enum không đồng nhất
Enum số
Enum số là mặc định trong TypeScript. Chúng là một tập hợp các giá trị được đặt tên được tự động gán các giá trị số bắt đầu từ 0 hoặc từ một giá trị bắt đầu tùy chỉnh nếu được chỉ định.
Ví dụ về Enum số cơ bản
Dưới đây là một ví dụ đơn giản về enum số:
enum Direction {
Up,
Down,
Left,
Right
}
let move: Direction = Direction.Up;
console.log(move); // Output: 0
Trong ví dụ này, enum Direction
có bốn thành viên: Up
, Down
, Left
, và Right
. Theo mặc định, Up
được gán giá trị 0
, Down
là 1
, v.v. Bạn cũng có thể chỉ định các giá trị số tùy chỉnh cho các thành viên.
Enum số với các giá trị tùy chỉnh
Bạn có thể gán các giá trị tùy chỉnh cho các thành viên enum:
enum Status {
New = 1,
InProgress,
Done = 5,
Cancelled
}
console.log(Status.New); // Output: 1
console.log(Status.InProgress); // Output: 2
console.log(Status.Done); // Output: 5
console.log(Status.Cancelled); // Output: 6
Trong ví dụ này, New
được đặt thành 1
, InProgress
được tự động đặt thành 2
, Done
được đặt thành 5
và Canceled
được tự động đặt thành 6
.
Chuỗi Enum
Enum chuỗi là một loại enum khác trong đó mỗi thành viên được khởi tạo bằng một chuỗi ký tự, khiến chúng dễ đọc hơn và dễ gỡ lỗi hơn.
Ví dụ về Enum chuỗi cơ bản
Dưới đây là một ví dụ về enum chuỗi:
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
let move: Direction = Direction.Left;
console.log(move); // Output: "LEFT"
Trong ví dụ này, mỗi thành viên enum được khởi tạo bằng một giá trị chuỗi. Không giống như enum số, enum chuỗi không có giá trị tự động tăng.
Enum không đồng nhất
Enum không đồng nhất là các enum chứa cả thành viên chuỗi và số. Mặc dù có thể định nghĩa chúng, nhưng nhìn chung không được khuyến khích vì có thể dẫn đến nhầm lẫn và lỗi trong mã.
Ví dụ về Enum không đồng nhất
Sau đây là một ví dụ về enum không đồng nhất:
enum MixedEnum {
Yes = "YES",
No = 0,
Maybe = 1
}
console.log(MixedEnum.Yes); // Output: "YES"
console.log(MixedEnum.No); // Output: 0
Trong ví dụ này, MixedEnum
chứa cả giá trị chuỗi và số. Sử dụng enum như vậy một cách thận trọng vì chúng có thể gây nhầm lẫn.
Các trường hợp sử dụng Enum
Enum hữu ích trong nhiều tình huống khác nhau:
- Biểu diễn một tập hợp các hằng số liên quan như hướng (Lên, Xuống, Trái, Phải).
- Xác định trạng thái trong máy trạng thái (Mới, Đang thực hiện, Hoàn thành, Đã hủy).
- Sử dụng chúng trong các câu lệnh chuyển đổi trường hợp để dễ đọc hơn.
Enum trong ví dụ Switch-Case
Sử dụng enum trong câu lệnh switch-case giúp cải thiện khả năng đọc mã và giúp quản lý trạng thái dễ dàng hơn.
enum Status {
New,
InProgress,
Done,
Cancelled
}
function getStatusMessage(status: Status): string {
switch (status) {
case Status.New:
return "The task is new.";
case Status.InProgress:
return "The task is in progress.";
case Status.Done:
return "The task is completed.";
case Status.Cancelled:
return "The task is cancelled.";
default:
return "Unknown status.";
}
}
console.log(getStatusMessage(Status.InProgress)); // Output: "The task is in progress."
Trong ví dụ này, câu lệnh switch-case dễ đọc hơn và ít xảy ra lỗi hơn nhờ sử dụng enum.
Phần kết luận
Enum trong TypeScript cung cấp một cách mạnh mẽ để định nghĩa một tập hợp các hằng số được đặt tên, cải thiện khả năng đọc mã và tính an toàn của kiểu. Bằng cách sử dụng enum số, chuỗi hoặc thậm chí là enum không đồng nhất, bạn có thể quản lý và sắp xếp mã của mình tốt hơn. Với hướng dẫn từng bước này, giờ đây bạn sẽ thoải mái sử dụng enum trong TypeScript để làm cho mã của mình sạch hơn và dễ bảo trì hơn.