【问题标题】:Typescript: Cast a string to a number enum?打字稿:将字符串转换为数字枚举?
【发布时间】:2025-12-21 17:45:11
【问题描述】:

我有一个枚举需要保留为数字枚举 - 所以我无法将其更改为字符串。

我想在不进行长时间切换的情况下将字符串转换为正确的枚举 :-)

例如,这是我的枚举

export enum LogLevel {
  TRACE = 0,
  DEBUG = 1,
  INFO = 2,
  LOG = 3,
  WARN = 4,
  ERROR = 5,
  FATAL = 6,
  OFF = 7
}

我得到一个字符串传递给我,假设字符串是“WARN”,我需要一个等于

的变量
LogLevel.WARN

字符串和枚举字符串之间的转换很容易,但当我需要将枚举保留为编号枚举时就不那么容易了。

有什么最好的方法吗?

提前致谢

** 编辑 **

实际上它是一个编译器错误,显示以下内容

使用字符串类型参数访问枚举时出现 TypeScript TS7015 错误

这里有一个修复

https://github.com/Microsoft/TypeScript/issues/17800

    let s: string = "WARN"
    console.log(LogLevel[s as keyof typeof LogLevel]) // 4

【问题讨论】:

  • 您是否尝试使用字符串作为索引?像这样LogLevel[str]

标签: typescript enums casting


【解决方案1】:

枚举是available as a runtime construct,您可以使用字符串对枚举进行索引:

let s: string = "WARN";
console.log(LogLevel[s]); // 4

On the playground.

【讨论】:

  • 谢谢,是的,这是一个 TS7015 错误,但在您确认它是正确的方法之后 - 它让我看看为什么。所以接受你的回答谢谢!我更新了我的答案
  • @IanGregson - 明白了。 this question's answers 是否相关?我想知道我们是否应该将这个标记为那个的副本。