Typescript, в конечном счете, перенесет ваше определение перечисления в нечто, похожее на:
var HelloWorldEnum = {};
HelloWorldEnum["option1"] = "Option1";
HelloWorldEnum["option2"] = "Option2";
HelloWorldEnum["option3"] = "Option3";
Как вы можете видеть.Это просто имя переменной в локальной области видимости.Он не добавляется к объекту глобального окна или любому другому объекту.
Существует только один способ получить доступ к переменной по ее имени в javascript, и это не рекомендуется ... и это с помощьюeval()
, который считается опасным API, который может вызвать проблемы с производительностью в вашем движке JavaScript только при его использовании.
Предупреждения в стороне.Вот как можно поступить так, как ты просишь.
var HelloWorldEnum = {};
HelloWorldEnum["option1"] = "Option1";
HelloWorldEnum["option2"] = "Option2";
HelloWorldEnum["option3"] = "Option3";
function getVariableFromScope(variable) { return eval(variable); }
function getOptions(name) {
const _enum = getVariableFromScope(`${name}Enum`);
return Object.keys(_enum).map(el => ({ label: _enum[el], value: el }));
};
console.log(getOptions('HelloWorld'));
В конечном счете, я думаю, вам следует изучить другие способы решения основной проблемы.