此声明失败。我如何从一个枚举变成另一个(相同的)
enum Enum1 {
Key1 = 'key'
}
enum Enum2 {
Key1 = 'key'
}
const key = Enum1.Key1
const key2 = key as Enum2
答案 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
它并不完美,因为它不强制枚举的兼容性。
不过还是比扩大到 string
或 any
好。