Tôi chỉ cần khai báo một giao diện và sử dụng một biến loại đó truy cập enum. Giữ giao diện và enum đồng bộ thực sự dễ dàng, vì TypeScript phàn nàn nếu có gì đó thay đổi trong enum, như vậy.
lỗi TS2345: Đối số của loại 'typeof EAbFlagEnum' không thể gán cho tham số của loại 'IAbFlagEnum'. Thuộc tính 'Di chuyển' bị thiếu trong loại 'loại EAbFlagEnum'.
Ưu điểm của phương pháp này là không yêu cầu truyền kiểu để sử dụng enum (giao diện) trong các tình huống khác nhau và do đó, nhiều loại tình huống hơn được hỗ trợ, chẳng hạn như chuyển đổi / trường hợp.
// Declare a TypeScript enum using unique string
// (per hack mentioned by zjc0816)
enum EAbFlagEnum {
None = <any> "none",
Select = <any> "sel",
Move = <any> "mov",
Edit = <any> "edit",
Sort = <any> "sort",
Clone = <any> "clone"
}
// Create an interface that shadows the enum
// and asserts that members are a type of any
interface IAbFlagEnum {
None: any;
Select: any;
Move: any;
Edit: any;
Sort: any;
Clone: any;
}
// Export a variable of type interface that points to the enum
export var AbFlagEnum: IAbFlagEnum = EAbFlagEnum;
Sử dụng biến, thay vì enum, tạo ra kết quả mong muốn.
var strVal: string = AbFlagEnum.Edit;
switch (strVal) {
case AbFlagEnum.Edit:
break;
case AbFlagEnum.Move:
break;
case AbFlagEnum.Clone
}
Cờ là một điều cần thiết khác đối với tôi, vì vậy tôi đã tạo ra một mô-đun NPM thêm vào ví dụ này và bao gồm các bài kiểm tra.
https://github.com/djabraham/ts-enum-tools