typescript 文档笔记-Enums

Numeric enums

  • 默认从 0 开始,指定了数字字后,后面的枚举的值自动基于该值递增
  • 枚举即也是类型
enum Direction {
  Up = 1,
  Down,
  Left,
  Right,
}
let a:Direction

String enums

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right // Error: 字符串类型没有自动递增,必须初始化
}

Heterogeneous enums

数字类型跟字符串类型的枚举可以混用。同事枚举的值可以是动态计算出来的,可以不是常量

Enums at compile time

枚举实际上市对象,所以可以当做值使用

Reverse mappings

对于数字类型的枚举,会创建 Reverse mappings。但对字符串不会生效

enum Enum {
  A
}
----------------------转换后
(function (Enum) {
    Enum[Enum["A"] = 0] = "A";
})(Enum || (Enum = {}));
---------------------访问
Enum['A'] === Enum.A === Enum[0]

const enums

  • 与常规枚举不同,它们在编译期间会被完全删除。
  • const枚举可以动态计算,但是只能使用常量枚举表达式
const enum Enum {
  A = 1,
  B = A * 2,
}
const enum Direction {
  Up,
  Down,
  Left,
  Right,
}

let directions = [
  Direction.Up,
  Direction.Down,
  Direction.Left,
  Direction.Right,
];

上面编译过后如下:

"use strict";
let directions = [
    0 /* Up */,
    1 /* Down */,
    2 /* Left */,
    3 /* Right */,
];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值