我正在尝试通过枚举访问地图的值,并为其中的所有字符串制作一个翻译就绪的应用程序。这两个问题重叠,我必须决定是使用枚举还是仅使用 JSON 格式的对象。
那么枚举和对象之间到底有什么区别和用途呢?
例如:
- 我可以使用枚举来访问数组以及插入标签和其他类似的东西
const enum FieldNames {
FirstField: "Field One",
SecondField: "Field Two"
};
someFieldArray[FieldNames.FirstField].label = FieldNames.FirstField;
someFieldArray[FieldNames.SecondField].label = FieldNames.SecondField;
- 或者我可以通过对象实现相同的行为
const FieldNames = {
FirstField: "Field One",
SecondField: "Field Two"
};
someFieldArray[FieldNames.FirstField].label = FieldNames.FirstField;
someFieldArray[FieldNames.SecondField].label = FieldNames.SecondField;
我真的没有得到选择枚举而不是简单对象的好处。在我看来,一个对象有更多的好处而没有任何缺点。
原文由 Florian Leitgeb 发布,翻译遵循 CC BY-SA 4.0 许可协议
枚举
如果您想要以下功能,枚举可能会给您带来额外的好处:
重要的是,您不能分配给枚举成员,类型会检查给枚举成员,而不是字符串。
此外,因为您在示例中使用了
const enum
,枚举在运行时将不存在,并且所有引用都将替换为文字值(如果您使用普通的enum
枚举 将 在运行时存在)。目的
将此与对象示例进行比较:
联盟
如果不需要完整的枚举,但想限制值,则可以使用文字值的并集: