TypeScript学习笔记之枚举类型

enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。

数字枚举

例如 红绿蓝 Red = 0 Green = 1 Blue= 2 分别代表红色0 绿色为1 蓝色为2

enum Color {Red, Green, Blue}
let c: Color = Color.Green; // c=0

这样写就可以实现,因为ts定义的枚举中的每一个组员默认都是从0开始的,所以也就是

enum Color { Red = 0, Green = 1, Blue = 2 }

增长枚举,可以手动的指定成员的数值。 例如,我们将上面的例子改成从 1开始编号:

enum Color { Red = 1, Green, Blue }

Red使用初始化为 1。 其余的成员会从 1开始自动增长,Green为 2,Blue为 3。

字符串枚举

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

enum Color{
   Red = 'red',
   Green = 'green',
   BLue = 'blue'
}

由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。

异构枚举

定义一个枚举A,定义一个接口B,他有一个属性aa,值为A.a

声明对象的时候要遵循这个规则

enum A{
  a,
  b
}

interface B{
  aa:A.a
}

let obj:B={
  aa:A.a
}

const枚举

let 和var 都是不允许的声明,只能使用const,常量枚举通过在枚举上使用 const修饰符来定义、

const 声明的枚举会被编译成常量

const enum A {
  a = 1,
  b = 'yes'
}
let c: number = 0
if (c === A.a) {
  console.log('yes');
}

普通声明的枚举编译完后是个对象

enum A{
  a=1,
  b='yes'
}

反向映射

它包含了正向映射( name -> value)和反向映射( value -> name)

要注意的是 不会为字符串枚举成员生成反向映射。

enum Color {Red, Green, Blue}
let a:Color=Color.Red; // 0
let b=Color[a] // Red
console.log(a,b);
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值