【前端问题精选】TypeScript中enum枚举类型的实现原理?

ts中的代码:

// 数字枚举

enum PostStatus {

Draft = 0,

baidu = 1,

sougou = 2,

}

上述编译为js代码:

var PostStatus;

(function (PostStatus) {

PostStatus[PostStatus["Draft"] = 0] = "Draft";

PostStatus[PostStatus["baidu"] = 1] = "baidu";

PostStatus[PostStatus["sougou"] = 2] = "sougou";

})(PostStatus || (PostStatus = {}));

将js代码放入浏览器执行,得到这样的结果:
image
上述的js代码是怎么运行出来PostStatus这样的对象的?

{0: "Draft", 1: "baidu", 2: "sougou", Draft: 0, baidu: 1, sougou: 2}

对上述js代码的执行顺序不是很明白,求解答,十分感谢。

回答:

PostStatus[PostStatus["Draft"] = 0] = "Draft";

可以分解成

PostStatus["Draft"] = 0;   //{Draft:0}

PostStatus[PostStatus["Draft"]]="Draft" //{Draft:0,0:"Draft"}

所以typescript的enum其实是定义了一个双向的映射关系
这样可以通过枚举值获取到枚举名称

var name=PostStatus[0];

通过枚举名称获取到枚举值

var value=PostStatus["Draft"];

回答:

原理就是赋值操作也是表达式,也有返回值。

var a = 1; var b = 2;

var c = (a = a + b); // 也可以不要这个括号

var d = {

[c=1]: c=2

};

以上是 【前端问题精选】TypeScript中enum枚举类型的实现原理? 的全部内容, 来源链接: utcz.com/a/133231.html

回到顶部