2016-10-27 15 views
6

Kể từ khi TypeScript giới thiệu các loại công đoàn, tôi tự hỏi nếu có bất kỳ lý do gì để khai báo một loại enum. Hãy xem xét việc kê khai sau enum loại:Typescript có công đoàn, vì vậy là enums dự phòng?

enum X { A, B, C } 
var x:X = X.A; 

và tuyên bố loại công đoàn tương tự:

type X: "A" | "B" | "C" 
var x:X = "A"; 

Nếu họ về cơ bản phục vụ cùng một mục đích, và các đoàn thể là mạnh hơn và biểu cảm, sau đó tại sao enums cần thiết?

+1

Enums ánh xạ tới các con số mà tôi đoán có thể hữu ích trong một số trường hợp nhất định. Tôi giả sử họ cũng muốn cuối cùng làm nhiều hơn với enums, chẳng hạn như cung cấp cho họ tài sản bạn có thể gọi (như C# hoặc java enums.) – PaulBGD

Trả lời

4

Theo như tôi thấy không, vì lý do rất đơn giản. Các loại liên minh hoàn toàn là khái niệm thời gian biên dịch, trong khi các enums thực sự được chuyển đổi và kết thúc bằng javascript (sample).

này cho phép bạn làm một số việc với enums, mà nếu không thì không thể với các loại công đoàn (như enumerating the possible enum values)

+0

Tôi nghĩ rằng bạn có nghĩa là để nói rằng có những lý do để sử dụng một 'enum'. Câu đầu tiên là khó hiểu. "Theo như tôi thấy [enums] không ..." trả lời các câu hỏi "là [có] bất kỳ lý do gì để khai báo một loại enum." – matthew

2

Có vài lý do khiến bạn muốn sử dụng một enum

Tôi thấy lợi thế lớn của việc sử dụng liên minh là chúng cung cấp một cách gọn gàng để thể hiện giá trị với nhiều loại và chúng rất dễ đọc. let x: number | string

EDIT: Kể từ TypeScript 2,4 Enums hiện hỗ trợ chuỗi.

enum Colors { 
    Red = "RED", 
    Green = "GREEN", 
    Blue = "BLUE", 
} 
Các vấn đề liên quan