TypeScript枚举类型

枚举

简单理解就是将所有的情况列举出来.
枚举不是用来定义类型的哈。就是说枚举不是一种数据类型。
enum xxx={
    key1=value1,
    key2=value2,
}
通过 xxx.key1的方式来获取

小粒子

let code: number = 200;
// 枚举一般用于:数据的提取或者说数据的统一管理。
// 下面这个例子就是统一管理http的状态码
enum HttpStateCode{
  success = 200,
  parmasError = 400,
  serverError=500
}
if (code === HttpStateCode.success) {
  console.log('成功')
} else if (code === HttpStateCode.parmasError) { 
  console.log('参数错误')
}

枚举没有value值将会怎么样呢?

如果枚举没有value值(枚举类型默认是从 0 开始的)
去看前面的值是否是一个数值,如果是,在前面那个数值上加1.
如果前面那个不是数值,则返回 undefined

enum HttpStateCode{
  success = 200,
  parmasError ,
  serverError
}
console.log(HttpStateCode.parmasError)  //输出 201
console.log(HttpStateCode.serverError) //输出 202

enum obj{
  code1,
  code2,
}
console.log(obj.code1) //输出 0  因为枚举类型默认是从 0 开始的
console.log(obj.code2) //输出 1


enum obj1{
  code1='张三',
  code2,
}
console.log(obj1.code1) //输出  张三
console.log(obj1.code2) //输出  undefined

枚举类型会被编译成一个双向映射的对象

enum Days {
  Sun,
  Mon,
  Tue,
}
console.log(Days.Sun); //输出 0
console.log(Days.Tue); //输出 6
console.log(Days); //枚举类型会被编译成一个双向映射的对象
console.log(Days[0] === "Sun"); // 输出 true

enum HttpStateCode {
  success = 200,
  parmasError = 400,
  serverError = 500
}
console.log(HttpStateCode)  

posted @ 2020-03-08 16:31  南风晚来晚相识  阅读(262)  评论(0编辑  收藏  举报