Ice*_*ind 6 javascript enums typescript
我很好奇为什么TypeScript转换器将枚举编译成字典查找而不是简单对象.这是一个TypeScript枚举示例:
enum transactionTypesEnum {
None = 0,
OSI = 4,
RSP = 5,
VSP = 6,
SDIV = 7,
CDIV = 8
}
Run Code Online (Sandbox Code Playgroud)
这是JS代码TypeScript发出的:
var TransactionTypes;
(function (TransactionTypes) {
TransactionTypes[TransactionTypes["None"] = 0] = "None";
TransactionTypes[TransactionTypes["OSI"] = 4] = "OSI";
TransactionTypes[TransactionTypes["RSP"] = 5] = "RSP";
TransactionTypes[TransactionTypes["VSP"] = 6] = "VSP";
TransactionTypes[TransactionTypes["SDIV"] = 7] = "SDIV";
TransactionTypes[TransactionTypes["CDIV"] = 8] = "CDIV";
})(TransactionTypes || (TransactionTypes = {}));
Run Code Online (Sandbox Code Playgroud)
我的好奇心想知道为什么TypeScript不会简单地这样做:
var TransactionTypes = {
None: 0,
OSI: 4,
RSP: 5,
VSP: 6,
SDIV: 7,
CDIV: 8
}
Run Code Online (Sandbox Code Playgroud)
TypeScriptenum类型提供安全的双向映射,因此您可以根据以下所有内容获取名称或值(例如获取值、值中的名称和纯字符串中的值)
enum Musketeers {
CAV = 0,
BAS = 1,
USR = 2
}
const selection = Musketeers.BAS;
// 1
console.log(selection);
const selectionName = Musketeers[selection];
// BAS
console.log(selectionName);
const fromString = Musketeers['BAS'];
// 1
console.log(fromString);
Run Code Online (Sandbox Code Playgroud)
特别是,字典不支持这一行(无需编写额外代码):
// Gets the name from the value
const selectionName = Musketeers[1];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |