Closed leinad59 closed 1 year ago
原文:
Enum 结构的特别之处在于,它既是一种类型,也是一个值。绝大多数 TypeScript 语法都是类型语法,编译后会全部去除,但是 Enum 结构是一个值,编译后会变成 JavaScript 对象,留在代码中。
// 编译前 enum Color { Red, // 0 Green, // 1 Blue // 2 } // 编译后 let Color = { Red: 0, Green: 1, Blue: 2 };
然而,这里的 Color 符合文末的“反向映射”中的内容:
Color
数值 Enum 存在反向映射,即可以通过成员值获得成员名。
TypeScript playground 的编译结果符合反向映射中的结果:
"use strict"; var Color; (function (Color) { Color[Color["Red"] = 0] = "Red"; Color[Color["Green"] = 1] = "Green"; Color[Color["Blue"] = 2] = "Blue"; // 2 })(Color || (Color = {}));
所以前面的“编译后”内容是否可以认为是不准确的?
前面的编译结果是一个简化版本,有利于读者理解。如果不考虑反向映射,就是这个结果。
原文:
然而,这里的
Color
符合文末的“反向映射”中的内容:TypeScript playground 的编译结果符合反向映射中的结果:
所以前面的“编译后”内容是否可以认为是不准确的?