使用ES6在JavaScript中枚举
我正在用Javascript重建一个旧的Java项目,并意识到在JS中没有好的方法来枚举枚举。
我能想到的最好的是:
const Colors = {
RED: Symbol("red"),
BLUE: Symbol("blue"),
GREEN: Symbol("green")
};
Object.freeze(Colors);
const
保持Colors
不被重新分配,冻结它可以防止变更键和值。 我使用的是Symbols,所以Colors.RED
不等于0
,或者除了它本身以外的其他东西。
这个配方有没有问题? 有没有更好的办法?
(我知道这个问题有点重复,但所有以前的Q / A都很旧,ES6给了我们一些新的功能。)
这个配方有没有问题?
我没有看到任何。
有没有更好的办法?
我将这两个陈述合并为一个:
const Colors = Object.freeze({
RED: Symbol("red"),
BLUE: Symbol("blue"),
GREEN: Symbol("green")
});
如果你不喜欢样板,就像重复的Symbol
调用一样,你当然也可以编写一个帮助函数makeEnum
,它可以从一个名称列表中创建相同的事物。
同时检查Enumify,这是一个非常好的功能强大的ES6枚举库。
希望这会有助于某人。
最好的祝福,
灵光
检查TypeScript如何执行它。 基本上他们做以下事情:
const MAP = {};
MAP[MAP[1] = 'A'] = 1;
MAP[MAP[2] = 'B'] = 2;
MAP['A'] // 1
MAP[1] // A
使用符号,冻结对象,无论你想要什么。
链接地址: http://www.djcxy.com/p/91759.html上一篇: Enums in Javascript with ES6
下一篇: How to shorten switch case block converting a number to a month name?