是否可以在Typescript中定义一个没有显式类型的枚举?
问题描述:
在一个接口中,我有10多个(可选)成员,其中大多数成员都有一组可能的值,所以我想为它们使用枚举。然而,这需要定义至少10个新的枚举类型,只有很少的成员(并且只使用一次),所以我想直接在界面中定义枚举。因此,与其:是否可以在Typescript中定义一个没有显式类型的枚举?
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中有没有办法做这种枚举声明?
在其他语言中,这是可能的,例如,在C++:
class Options {
public:
enum { value1, value2, } enumMember = value1;
};
答
的一种可能的解决方案似乎是字符串:
export interface Options {
option1?: bool | "option11" | "option12";
option2?: bool | "option21" | "option22";
option3?: bool | "option31" | "option32" | "option33";
option4?: bool | "option41" | "option42";
option5?: bool | "option51";
}
的transpiler确保只有这些值可以被分配,其基本上像一个枚举会表现。