【问题标题】:Convert string enum type to union type of enum values将字符串枚举类型转换为枚举值的联合类型
【发布时间】:2018-02-14 19:21:10
【问题描述】:

如何获得打字稿字符串枚举的联合类型?

enum MyEnum {
  A = 'a', // Values are different from keys, so keyof will not help here.
  B = 'b',
}

给定一个像上面这样的枚举类型,我怎样才能得到联合类型“a” | “b”?

【问题讨论】:

  • 只是好奇这个用例是什么。我想不出我需要输入 "a"|"b" 而不是字符串 enum 的情况
  • 是的,一个用例会很有帮助。 MyEnum 类型是您正在寻找的联合的子类型(MyEnum = MyEnum.A | MyEnum.B"a"|"b"),但我找不到将超类型从类型系统中诱导出来的方法。如果您可以发布您的用例,我们也许可以为您提供不涉及与 TypeScript 斗争的解决方案。
  • 用例:const value:MyEnum = 'a' 失败,可能不应该...
  • @TitianCernicova-Dragomir 那么,您对此有什么想法吗?

标签: typescript enums


【解决方案1】:

两个都好

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

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

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

【讨论】:

  • 嘿,你能解释一下吗?
猜你喜欢
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 2014-07-23
  • 2010-12-21
  • 2010-10-11
相关资源
最近更新 更多