2017-08-13 59 views
1

在一个接口中,我有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; 
    }; 

回答

1

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

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

的transpiler确保只有这些值可以被分配,其基本上像一个枚举会表现。

相关问题