Búsqueda de sitios web

Obtener el nombre de Enum como cadena en TypeScript


Estoy tratando de encontrar una manera de convertir el nombre de un enum a una cadena. Si tengo el enum Response a continuación, ¿cómo puedo convertir o extraer 'Response' a una cadena? Una de mis funciones toma cualquier enum como entrada y necesito el nombre, no el tipo de enum, para ejecutar otro código.

enum Response 
{
    No = 0,
    Yes = 1 
}

Respuesta #1

No, no puedes convertir un nombre de enum a una cadena ya que la información de tipo solo se almacena durante la compilación. Tienes que pasar parámetros adicionales, especificando qué enum estás utilizando.


Pero puedes usar corchetes para convertir un valor de enumeración numérica a cadena y viceversa:

Violín

enum YesNo {
    No = 0,
    Yes = 1, 
}

console.log(YesNo[YesNo.Yes]);
console.log(YesNo[YesNo.No]);
console.log(YesNo["Yes"]);
console.log(YesNo["No"]);
console.log(YesNo[1]);
console.log(YesNo[0]);

Este código se compila en:

var YesNo;
(function (YesNo) {
YesNo[YesNo["No"] = 0] = "No";
YesNo[YesNo["Yes"] = 1] = "Yes";
})(YesNo || (YesNo = {}));
console.log(YesNo[YesNo.Yes]);
console.log(YesNo[YesNo.No]);
console.log(YesNo["Yes"]);
console.log(YesNo["No"]);
console.log(YesNo[1]);
console.log(YesNo[0]);

Respuesta #2

Object.keys({ Response })[0]; // 'Response'

Artículos relacionados