是否可以在 Typescript 中定义没有显式类型的枚举?
Posted
技术标签:
【中文标题】是否可以在 Typescript 中定义没有显式类型的枚举?【英文标题】:Is it possible to define an enum without an explicit type in Typescript? 【发布时间】:2018-01-21 09:32:14 【问题描述】:在一个界面中,我有 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 中做这种枚举声明?
在其他语言中这是可能的,例如在 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";
转译器确保只能分配这些值,这本质上类似于枚举的行为。
【讨论】:
以上是关于是否可以在 Typescript 中定义没有显式类型的枚举?的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 是不是为 NodeJS 模块访问提供显式公共 API?