Typescript 中枚举(上)

可以在初始化枚举时对 Up 赋值,枚举好处是给我们一种不可以修改的集合可以用来作为配置选项,我们无法在随后动态修改

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

这是枚举编译后的 js 文件,

编译后的枚举

var Direction;
(function (Direction) {
    Direction[Direction["Up"] = 1] = "Up";
    Direction[Direction["Down"] = 2] = "Down";
    Direction[Direction["Left"] = 3] = "Left";
    Direction[Direction["Right"] = 4] = "Right";
})(Direction || (Direction = {}));
var Direction;
(function (Direction) {
    Direction[Direction["Up"] = 1] = "Up";
    Direction[Direction["Down"] = 2] = "Down";
    Direction[Direction["Left"] = 3] = "Left";
    Direction[Direction["Right"] = 4] = "Right";
})(Direction || (Direction = {}));
Direction.OK = 1;

console.log(Direction.Up)
console.log(Direction.OK)

我们是可以为 Direction 动态添加属性。当我们调用 Direction.Up 发生了什么?
Direction["Up"] = 1 这个不难理解

var obj = {};
// obj["Up"] = 1;
obj[obj["Up"] = 1]
console.log(obj.Up) //1
// obj["Up"] = 1;
obj[obj["Up"] = 1] = "Up"
console.log(obj.Up)
console.log(obj.Up = 1) //1
console.log(obj[1]) // Up

通过上面代码解释我们大家可能为 typescript 如何实现 enum 有所了解了吧,大家可以在自己 js 项目这样来定义您的枚举结构。

无初始化的枚举

也可以创建枚举时不给初始值

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

枚举的调用

enum Response {
    No = 0,
    Yes = 1,
}

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

respond("Princess Caroline", Response.Yes)

调用枚举也很简单,就像调用对象属性一样简单。

枚举的表达式赋值

enum E{
    A = getSomeValue(),
    B // error! 'A' 是表达式初始化而不是固定值所以 'B' 需要初始化 
    }

function getSomeValue(){
    return 1;
}
enum E{
    A = getSomeValue(),
    B = getSomeValue()
    }

function getSomeValue(){
    return 1;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,860评论 2 9
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,342评论 0 3
  • 1.类型别名 类型别名会给一个类型起个新名字。 类型别名有时和接口很像,但是可以作用于原始值,联合类型,元组以及其...
    wave浪儿阅读 2,955评论 0 1
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,083评论 0 0
  • 一天的忙碌,却是真觉得很圆满地度过。 白天在大棚里为草莓摘叶子,中午一顿美美的午餐,下午继续摘叶子,晚上又一顿美美...
    改革啊改革阅读 208评论 0 0