将字符串枚举类型转换为枚举值的联合类型

7
我该如何获得typescript字符串枚举的联合类型?
enum MyEnum {
  A = 'a', // Values are different from keys, so keyof will not help here.
  B = 'b',
}

给定上面的枚举类型,我该怎么得到联合类型 "a" | "b" ?


只是好奇这个的用例是什么。我想不出有什么情况需要输入"a"|"b"而不是字符串enum - Titian Cernicova-Dragomir
1
是的,提供一个使用案例会很有帮助。类型 MyEnum 是你正在寻找的联合类型的子类型 (MyEnum = MyEnum.A | MyEnum.B"a"|"b"),但我无法找到一种方法来从类型系统中获取超类型。如果您可以发布您的使用案例,我们或许可以为您提供一个解决方案,而不必与 TypeScript 作斗争。 - jcalz
使用案例:const value:MyEnum = 'a' 失败了,可能不应该这样... - Troy Weber
@TitianCernicova-Dragomir,你对此有什么想法吗? - Alexander Abakumov
1个回答

0

两个都可以

type enumValuesToUnion<T> = T extends `${infer R}` ? R :never

type enumValuesToUnion_<T> = `${T}`

type a = enumValuesToUnion<MyEnum>
type b = enumValuesToUnion_<MyEnum>

嘿,你能进一步解释一下吗? - ypahalajani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接