Hämta Enum-namn som sträng i TypeScript
Jag försöker hitta ett sätt att konvertera namnet på en enum till en sträng. Om jag har enumen Response nedan, hur kan jag konvertera eller extrahera 'Response' till en sträng? En av mina funktioner tar vilken enum som helst som indata och jag behöver namnet, inte typen av enum, för att köra annan kod.
enum Response
{
No = 0,
Yes = 1
}
Svar #1
Nej, du kan inte konvertera ett enum-namn till en sträng eftersom typinformationen endast lagras under kompilering. Du måste skicka ytterligare parametrar som specificerar vilket enum du använder.
Men du kan använda hakparenteser för att omvandla numeriskt enumvärde till sträng och tillbaka:
Fiol
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]);
Denna kod kompileras till:
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]);Svar #2
Object.keys({ Response })[0]; // 'Response'
