打字稿:将字符串转换为数字枚举?

时间:2019-06-16 10:14:47

标签: typescript enums casting

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

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

例如,这是我的枚举

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

1 个答案:

答案 0 :(得分:2)

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

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

On the playground