typescript - Mapeo inverso de enumeración de cadenas angular 4
Tengo un enum de cadenas:
export enum TokenLength {
SIX = '6',
EIGHT = '8',
}
Y necesito obtener la cadena 'SIX' o 'EIGHT', así que mapear al revés este enum. He intentado varias cosas:
tokenLength = TokenLength;
for (var enumMember in this.tokenLength) {
console.log("enum member: ", enumMember); //result: enum member: SIX , enum member: EIGHT
}
for (var enumMember in this.tokenLength) {
console.log("enum member: ", this.tokenLength[enumMember]); //result: enum member: 6, enum member: 8
}
Esto parece estar funcionando bien, pero cada vez que hago lo siguiente, no funciona.
console.log(this.tokenLength['SIX']); //result: 6
console.log(this.tokenLength.SIX); //result: 6
console.log(this.tokenLength[this.tokenLength.SIX]); //result: undefined
console.log(this.tokenLength['6']); //result: undefined
console.log(this.tokenLength[0]); //result: undefined
Necesito que el resultado 'undefined' sea 'SEIS'. ¿Cómo puedo hacer eso? Gracias de antemano.
Respuesta #1
Puedes consultar la documentación de TypeScript.typeScript
enum Enum {
A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"
Para que funcione de esta manera, necesitas eliminar las comillas en tu enum:
enum TokenLength {
SIX = 6,
EIGHT = 8
}
Espero que eso ayude
Respuesta #2
Según la documentación de TypeScript:
La advertencia es que los enums inicializados con cadenas no se pueden mapear inversamente para obtener el nombre del miembro del enum original.
Así que, desafortunadamente, no es posible.
