在 JavaScript 中定义一个枚举对象并从它的键中获取字符串



我有一个这样声明的对象:

const State = {
NoState = 0,
FirstState = 1,
SecondState = 2,
...
};

这个State对象定义了一个单向向前的FSM,用数字表示下一步的状态。

是否有一种方法可以从状态的值打印名称本身?我的意思是这个日志:

console.log(State.FirstState);

将以某种方式将'FirstState'字符串打印到控制台。提前谢谢。

你可以查看Typescript enum是如何转换成javascript的。

你在Typescript中的enum:

enum State {
NoState = 0,
FirstState = 1,
SecondState = 2,
};

你的枚举在JS中转换:

var State;
(function (State) {
State[State["NoState"] = 0] = "NoState";
State[State["FirstState"] = 1] = "FirstState";
State[State["SecondState"] = 2] = "SecondState";
})(State || (State = {}));

看起来有点……很难,但是你可以同时拥有int和string:

State.FirstState // 1
State[State.FirstState] // "FirstState"

最新更新