根据2个枚举创建联合类型

时间:2018-11-21 13:07:48

标签: typescript typescript-typings

如果我有2个枚举,并且我想基于2个枚举来声明一个新类型,有没有办法做到这一点?

export enum Actions {
  A = 'a',
  B = 'b',
  C = 'c'
}
export enum Prefix {
  X = 'x',
  Y = 'y'
}

我想要一个由2个枚举组成的新类型

type AP = "ax" | "ay" | "bx" | "by" | "cx" | "cy"

1 个答案:

答案 0 :(得分:0)

你好

我刚刚看完问题,绝对没有事可做。

我看到了评论,但我不喜欢包含Not possible等的句子。

无论如何:

我开始玩耍,并制作了一些值得分享的东西。下面的代码演示了枚举键的“动态”键入。我创建了一个将您的组合作为嵌套对象保存的类型。因此,您的类型值ab将在“已键入” a.b中表示为enum

只看代码,它应该使它变得清晰一些。


export enum Actions {
    A = 'A',
    B = 'B',
    C = 'C'
}
export enum Prefix {
    X = 'X',
    Y = 'Y'
}

type actType = keyof typeof Actions
type preType = keyof typeof Prefix

type resultsArr = {[key1 in actType]: {[key2 in preType]: string}};


// structure of resultsArr:
/*
    A: {
        X: string, // holds 'AX'
        Y: string // holds 'AY'
    },
    B: {
        X: string, // holds 'BX'
        Y: string  // ...
    },
    C: {
        X: string,
        Y: string
    }

*/

也许值得尝试...

如果您能够在操作后产生这样的对象,则可能可以根据您的问题键入有用的内容。

然后可以轻松地将此类对象标准化为您拥有的字符串值。 您还必须对所有枚举进行硬编码并“手动”连接它们。

但是无论如何,我想分享.. 干杯。