2017-08-13 50 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確保只有這些值可以被分配,其基本上像一個枚舉會表現。

相關問題