2017-05-14 4 views
1

Ich habe unter enum Typ in Typescript.Wie kann ich enum Anzeigename in Typescript setzen?

enum RoleTypes{ 
    None, 
    Admin, 
    SuperAdmin 
} 

Wenn Code ausführen

var roleName = RoleTypes[RoleTypes.SuperAdmin]; 

Variable rolename ist Superadmin ist es möglich, es zu einem benutzerdefinierten Namen 'Super Administrator' zu ändern, und wie kann ich das tun?

Antwort

2

Sie sehen eine seperat Objekt oder Array für diese verwenden können (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

Ab Typoskript 2.4 you can assign String-Werte direkt Mitglieder ENUM

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

Auch here

+0

Nicht versucht, da es nicht freigegeben ist. Was ist der Wert von RoleTypes.None, 0 oder 'None' in Typescript 2.4? –

+0

Ich möchte, dass RoleTypes.None 0 bleibt und RoleTypes [RoleTypes.None] den Wert 'None' hat. oder RoleTypes.SuperAdmin bleibt Wert 2 und RoleTypes [RoleTypes.SuperAdmin] hat den Wert 'Super Administrator'. Ist es möglich? –

+0

Nach dem Commit in GH, können Sie gemischte Typen für Enum haben, einschließlich Int und String –

0

Ja, erstellen Sie einfach einen Alias ​​mit einem zitierten Bezeichner

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