是否可以在Typescript中定义没有显式类型的枚举?

时间:2017-08-13 10:26:06

标签: typescript

在一个界面中,我有10多个(可选)成员,其中大多数都有一组确定的可能值,所以我想为它们使用枚举。然而,这需要定义至少10个新的枚举类型,只有很少的成员(并且只使用一次),所以我想直接在界面中定义枚举。因此,而不是:

export interface Options {
    option1?: bool | Option1Enum;
    option2?: bool | Option2Enum;
    option3?: bool | Option3Enum;
    option4?: bool | Option4Enum;
    option5?: bool | Option5Enum;
}

我想要一些隐含的枚举,比如说:

export interface Options {
    option1?: bool | { option11, option12 };
    option2?: bool | { option21, option22 };
    option3?: bool | { option31, option32, option33 };
    option4?: bool | { option41, option42 };
    option5?: bool | { option51 };
}

不编译。有没有办法在Typescript中做这种枚举声明?

在其他langugages中,这是可能的,例如在C ++中:

  class Options {
  public:
    enum { value1, value2, } enumMember = value1;
  };

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案似乎是字符串:

export interface Options {
    option1?: bool | "option11" | "option12";
    option2?: bool | "option21" | "option22";
    option3?: bool | "option31" | "option32" | "option33";
    option4?: bool | "option41" | "option42";
    option5?: bool | "option51";
}

转换器确保只能分配这些值,这基本上就像枚举行为一样。