2017-05-14 70 views
1

我在Typescript中有下面的枚舉類型。如何在Typescript中設置枚舉顯示名稱?

enum RoleTypes{ 
    None, 
    Admin, 
    SuperAdmin 
} 

當運行代碼

var roleName = RoleTypes[RoleTypes.SuperAdmin]; 

變量ROLENAME是超級管理員,是否有可能將其更改爲一個自定義名稱「超級管理員」,我該怎麼做呢?

回答

2

可以使用此一seperat對象或陣列(Playground):

enum RoleTypes { 
    None, 
    Admin, 
    SuperAdmin 
} 

let RoleTypesDisplay: { [index: number]: string } = {}; 
RoleTypesDisplay[RoleTypes.None] = "None"; 
RoleTypesDisplay[RoleTypes.Admin] = "Administrator"; 
RoleTypesDisplay[RoleTypes.SuperAdmin] = "Super Administrator"; 

var roleName = RoleTypesDisplay[RoleTypes.SuperAdmin]; 
alert(roleName); 

// because RoleTypes is a number based enum that starts with 0 this is equals to 
RoleTypesDisplay = ["None", "Administrator", "Super Administrator"]; 

var roleName = RoleTypesDisplay[RoleTypes.SuperAdmin]; 
alert(roleName); 
2

作爲打字稿2.4的直接you can assign字符串值枚舉成員

enum RoleTypes{ 
    None = "None", 
    Admin = "Administrator", 
    SuperAdmin = "Super Administrator" 
} 

另見here

+0

未嘗試,因爲它沒有發佈。在typescript 2.4中,RoleTypes.None,0或'None'的價值是什麼? –

+0

我想RoleTypes.None保持爲0,而RoleTypes [RoleTypes.None]的值爲'None'。或RoleTypes.SuperAdmin保持值2,RoleTypes [RoleTypes.SuperAdmin]的值爲'超級管理員'。可能嗎? –

+0

根據GH的提交,你可以有混合類型的枚舉,包括int和字符串 –

0

是的,只需使用帶引號的標識符創建別名

enum RoleTypes { 
None, 
Admin, 
SuperAdmin, 
'Super Administrator' = SuperAdmin 
}