TypeScript枚举转换/转换

时间:2018-03-08 08:14:23

标签: typescript enums casting

此声明失败。我如何从一个枚举变成另一个(相同的)

enum Enum1 {
  Key1 = 'key'
}

enum Enum2 {
  Key1 = 'key'
}

const key = Enum1.Key1
const key2 = key as Enum2

4 个答案:

答案 0 :(得分:1)

如果您使用数字而不是字符串作为枚举值,这将起作用:

enum Enum1 {
  Key1 = 2
}

enum Enum2 {
  Key1 = 2
}

const key = Enum1.Key1
const key2 = Enum2[Enum1[key]];

答案 1 :(得分:0)

在运行时,变量将包含枚举值(在您的情况下为key)所以您可以通过any进行转换,它应该可以正常工作

const key = Enum1.Key1
const key2: Enum2 = key as any

答案 2 :(得分:0)

您可以先转换为字符串,然后转换为所需的枚举:

const key2 = key as string as Enum2

答案 3 :(得分:0)

Typescript 似乎确实不会检查可能的值,所以它没有注意到这些枚举是兼容的。 我现在正在做的是

const key2 = key as Enum1 & Enum2

它并不完美,因为它不强制枚举的兼容性。 不过还是比扩大到 stringany 好。

相关问题