Вы можете использовать Object.keys для получения имени ключа, а затем использовать его для получения соответствующего перечисления. Это будет работать на https://www.typescriptlang.org/play/index.html и должно дать вам достаточно, чтобы сделать это:
enum Fruits {
Apple = 1,
Orange
}
enum Vegetables {
Carrot = 75,
Lettuce = 88,
Asparagus = 96
}
class ThingParser {
public GetArbitraryValues(fromObject: any): string[] {
const fancyStrings: string[] = [];
const key = Object.keys(fromObject)[0];
let getStringMethod: (theValue: number) => string;
switch (key) {
case "Fruits":
getStringMethod = (fruit: number) => {
return Fruits[fruit];
}
break;
case "Vegetables":
getStringMethod = (veg: number) => {
return Vegetables[veg];
}
break;
default:
throw "Unknown enum...";
}
const intValues = (<string>fromObject[key]).split(",")
.map(x => Number.parseInt(x.trim()));
for (const intVal of intValues) {
fancyStrings.push(getStringMethod(intVal));
}
return fancyStrings;
}
}
const parser = new ThingParser();
let fruits = document.createElement('h2');
fruits.textContent = parser.GetArbitraryValues({ "Fruits": "1,2" }).join(", ");
document.body.appendChild(fruits);
let veggies = document.createElement('h2');
veggies.textContent = parser.GetArbitraryValues({ "Vegetables": "88" }).join(", ");
document.body.appendChild(veggies);