跟随handbook的脚步,详细介绍一下枚举。

enum Direction {
    Up = 1,Down,Left,Right
}

一个枚举类型可以包含零个或多个枚举成员,每个枚举成员可以是一个常数,也可以是计算变量。

如果没有初始化就会被当作常数,这是第一项为0,其余为前一项加一。

如果项具有ts表达式,在编译的时候就会被计算出来。比如

enum FileAccess {// constant membersNone,Read    = 1 << 1,Write   = 1 << 2,ReadWrite  = Read | Write// computed memberG = "123".length }

当然,反向映射是木有问题的。

enum Enum {A
}
let a = Enum.A;
let nameOfA = Enum[Enum.A]; // "A"

它被编译成:

var Enum;
(function (Enum) {Enum[Enum["A"] = 0] = "A";
})(Enum || (Enum = {}));
var a = Enum.A;
var nameOfA = Enum[Enum.A]; // "A"

常数枚举

常数枚举是在enum关键字前使用const修饰符

const enum Enum {A = 1,B = A * 2
}

你编译出来会看到js什么也没有,是的,它是在编译阶段会被删除,而且它和名字一样只能使用常数表达式。(常数枚举成员在使用的地方被内联进来。 这是因为常数枚举不可能有计算成员)。

const enum Enum {A = 1*8,B = A * 2
}
var re=Enum.A;
console.log( re);

你会看到编译出来是

var re = 8 /* A */;
console.log(re);

外部枚举

外部枚举就像这样,用declare关键字定义

declare enum Enum {A = 1,B,C = 2
}

引用中文book的话说:外部枚举和非外部枚举之间有一个重要的区别,在正常的枚举里,没有初始化方法的成员被当成常数成员。 对于非常数的外部枚举而言,没有初始化方法时被当做需要经过计算的。

declare enum Enum {A = 1,B,C = 2
}
var re=Enum.A;console.log( re); 

如上的外部枚举,编译出来为

var re = Enum.A;
console.log(re);

转载于:https://www.cnblogs.com/dh-dh/p/5202780.html

Typescript学习笔记(二)枚举相关推荐

  1. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  3. typeScript学习笔记day01——小肉包

    typeScript学习笔记 class1: 一.javaScript(js)的优缺点 javaScript是在微软公司和网景公司之间爆发的浏览器大战期间,由网景公司的Brendan Eich(布兰登 ...

  4. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  5. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  6. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  7. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  8. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

  9. Ethernet/IP 学习笔记二

    Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...

  10. TypeScript学习笔记3:运算符

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 运算符 ...

最新文章

  1. R语言数据可视化 ggplot2基础3 添加几何对象
  2. C++/C语言实现HTTP的GET和POST请求
  3. 两个小程序大概的了解一下java的线程
  4. 【英语学习】【English L06】U02 Food L2 Salad dressings
  5. DEAP2.1软件与Malmquist指数操作说明
  6. Python编程之二维码生成
  7. docker安装mysql后无法执行mysql命令
  8. FANUC主板图纸 电路图
  9. [Vuetify] Multiple instances of Vue detected
  10. android studio开始暂停按钮
  11. 拼装机器人感想_机器人实验心得体会
  12. LAPARDIN WEDLUTS Romantic Wedding LUTs 浪漫唯美婚礼电影调色预设
  13. 项目管理软件,协同管理软件介绍
  14. Google 释出开源软件漏洞扫描工具 OSV-Scanner​
  15. 迁移学习--深度迁移学习
  16. 跟主页劫持的浏览器再见了,被恶意劫持修改方法!
  17. 无人机深度学习虚拟现实平台构建
  18. 循迹模式——红外循迹模块使用介绍
  19. 增加开机logo和动画。
  20. 数据结构(三)线性表概念及Java代码实现顺序结构链式结构

热门文章

  1. c++类的成员函数作回调函数为啥要声明为static的
  2. python @classmethod和@staticmethod的区别
  3. Python的Web Services客户端
  4. android 应用选择器的使用
  5. Eclipse debug ‘Source not found’
  6. CSS3给页面打标签
  7. OpenCV中矩阵的归一化
  8. pragma pack对齐方式详细介绍
  9. 合适的大数据安全分析平台如何选择
  10. Java 使用 POI 对 Excel文件 进行读写操作