我们尝试将文本分配给
enum
变量,但得到 undefined
enum Color {
Green = "GRN",
Red = "RD"
}
let text: string = "GRN";
let test: Color = Color[text as keyof typeof Color];
console.log(test);
这将返回
undefined
如有任何帮助,我们将不胜感激。
出现此问题的原因是您尝试使用与枚举键不直接匹配的字符串来访问枚举值。 在 TypeScript 中,枚举可以通过它们的键来访问,但是当您使用值的字符串表示形式(例如“GRN”)时,它将无法正确映射。
您可以创建一个函数,在给定相应值时返回枚举键:
enum Color {
Green = "GRN",
Red = "RD"
}
let text: string = "GRN";
// Function to get Enum key from its value
function getEnumKeyByValue(enumObj: any, value: string) {
return Object.keys(enumObj).find(key => enumObj[key as keyof typeof Color] === value);
}
let testKey: keyof typeof Color | undefined = getEnumKeyByValue(Color, text);
console.log(testKey); // Output will be 'Green'
console.log(testKey ? Color[testKey] : undefined); // Output will be 'GRN'