您的位置:首页 > Web前端 > JavaScript

TypeScript与JavaScript不同之处系列(六) ===>枚举

2020-04-05 07:15 746 查看

本系列目的: 列出TypeScript与JavaScript的不同点, 缩小文档内容, 提高学习速度. 原文档地址: https://www.tslang.cn/index.html

全系列目录

文章目录

1. 枚举

1.1. 简单使用

enum Direction { a = 3, b, c, d} // 手动赋值,  b c d的值分别为4, 5, 6
enum Direction { a, b, c, d} // 默认赋值, a b c d的值分别为1, 2, 3, 4

// 使用枚举
enum Response {
No = 0,
Yes = 1,
}

function respond(recipient: string, message: Response): void {
// ...
}

respond("Princess Caroline", Response.Yes)

1.2. 字符串枚举

每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}

1.3. 常量枚举

常量枚举只能使用常量枚举表达式,并且不同于常规的枚举,它们在编译阶段会被删除。 常量枚举成员在使用的地方会被内联进来。 之所以可以这么做是因为,常量枚举不允许包含计算成员。

const enum Directions {
Up,
Down,
Left,
Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]

// 编译后的的代码为: 可以看到enum没有了

var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

1.4. 异构枚举

就是字符串和数字的混合, 官方不建议这么使用

enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES",
}

1.5. 反向映射

enum Enum {
A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"
  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
刘翾 博客专家 发布了167 篇原创文章 · 获赞 275 · 访问量 59万+ 他的留言板 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: