在打字稿中将字符串分配给枚举时未定义

问题描述 投票:0回答:1

我们尝试将文本分配给

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

如有任何帮助,我们将不胜感激。

javascript typescript enums
1个回答
0
投票

出现此问题的原因是您尝试使用与枚举键不直接匹配的字符串来访问枚举值。 在 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'
© www.soinside.com 2019 - 2024. All rights reserved.