Sử dụng Enum trong TypeScript

Giới thiệu nội dung bài viết

Chào các bạn,hôm nay anh sẽ hướng dẫn mọi người về Enum là như thế nào?

1. Enum là gì

Typescript cũng hỗ trợ enum giống như Enum trong Java vậy. Enum cho phép chúng ta tạo một nhóm các giá trị hằng số trong một nơi chung.

Có 3 loại Enum là Nummeric, String, Heterogeneous

2. Nummeric Enum là gì

Chúng ta sử dụng từ khoá enum để tạo Enum

1
2
3
4
5
6
enum PrintMedia {
  Newspaper,
  Newsletter,
  Magazine,
  Book
}

Các vị trí của enum được tính từ 0 và được tăng lên 1 đơn vị. Như vậy giá trị của Newspaper, Newsletter, Magazine, Book

1
2
3
4
Newspaper = 0
Newsletter = 1
Magazine = 2
Book = 3

Enum luôn được gán giá trị là số khi chúng được lưu. Giá trị đầu tiên luôn là 0 và các giá trị tiếp theo là tăng lên 1.

Chúng ta có thể gán giá trị khởi tạo ban đầu cho Enum

1
2
3
4
5
6
enum PrintMedia {
  Newspaper = 1,
  Newsletter,
  Magazine,
  Book
}

Như vậy giá trị Newspaper là 1, thì giá trị Newsletter là 2, Magazine là 3 và Book là 4. Nếu không gán giá trị thì mặc định là 0.

  • Trả về giá trị Nummeric Enum trong function**

Chúng ta có thể trả về kết quả Enum trong function như sau

1
2
3
4
5
6
7
8
9
10
11
12
13
14
enum PrintMedia {
    Newspaper = 1,
    Newsletter,
    Magazine,
    Book
}

function getMedia(mediaName: string): PrintMedia {
    if (  mediaName === 'Forbes' || mediaName === 'Outlook') {
        return PrintMedia.Magazine;
    }
 }

let mediaType: PrintMedia = getMedia('Forbes'); // returns Magazine

2. Sting Enum là gì

Chúng ta có thể sử dụng String trong enum như sau

1
2
3
4
5
6
7
8
9
enum PrintMedia {
    Newspaper = "NEWSPAPER",
    Newsletter = "NEWSLETTER",
    Magazine = "MAGAZINE",
    Book = "BOOK"
}
// Access String Enum 
PrintMedia.Newspaper; //returns NEWSPAPER
PrintMedia['Magazine'];//returns MAGAZINE

3. Heterogeneous Enum là gì

Heterogeneous là có thể chứa chữ và số

1
2
3
4
5
enum Status { 
    Active = 'ACTIVE', 
    Deactivate = 1, 
    Pending
}

Mọi người hãy subcribe kênh youtube dưới đây nhé. Videos về các kỹ năng mềm và lập trình sẽ được cập nhật hằng tuần


Comments