Получить Enum Name как String в TypeScript - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь найти способ преобразовать имя перечисления в строку.Если у меня есть перечисление Ответа ниже, как я могу преобразовать или извлечь «Ответ» в строку?Одна из моих функций принимает любое перечисление в качестве входных данных, и мне нужно имя, а не тип перечисления для выполнения другого кода.

enum Response 
{
    No = 0,
    Yes = 1 
}

1 Ответ

1 голос
/ 08 апреля 2019

Нет, вы не можете преобразовать имя перечисления в строку, так как информация о типе сохраняется только во время компиляции. Вы должны передать дополнительный параметр, указывающий, какое перечисление вы используете.


Но вы можете использовать квадратные скобки для преобразования значения перечисления в строку и обратно:

Fiddle

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]);

Этот код компилируется в:

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]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...