三(二)ts非基础类型(枚举)

数字枚举

使用enum定义一个枚举类型

enum Color {
	red,
	yellow,
	blue
}
let clr: Color = Color.red

如上面代码中,我们定义了一个关于颜色的枚举类型,里面的值会从0开始依次递增,也就是说Color.red为0,Color.yellow为1依次类推。当然我们也可以自定义初始值。

enum Color {
	red = 10,
	yellow,
	blue
}
let clr: Color = Color.red

这样我们的Color枚举会从10开始依次赋值。

数字枚举不但可以由属性映射到值,还可以由值映射到属性

// 反向映射
enum Color {
  red,
  yellow,
  blue
}
let cltAttr = Color[0] // 'red'

字符串枚举

当然,我们也可以定义字符串值的枚举,如果其中有属性定义为字符串,那么该值后面所有得枚举属性都需要你设置一个初始值。而该属性前面的属性则延用数字枚举的规则定义。

enum Color {
  red,
  blue = 'b',
  yellow = 'y',
}

常量枚举

const enum Color {
  red,
  blue = 'b',
  yellow = 'y',
}
let clr:Color = Color.red

常量枚举与普通枚举得区别:普通枚举在编译得时候会真的生成一个对象保存到js代码中,而常量枚举不会,它会直接赋值到对应得变量上;因为常量枚举没有生成真正得对象,所以常量枚举只能包含字面量或其他常量枚举成员,并且不能包含计算成员,也不支持反向映射。

在这里插入图片描述
在这里插入图片描述

注意

枚举里面的值是可以重复定义的,所以在赋值的时候需要细心

enum Direction{
  Up = 7,
  Down = 7
}

枚举赋值一般使用字面量直接赋值,如果使用函数或者非const定义的变量,即使返回的是数字后面的枚举也需要手动赋值

let index = 3
enum Direction{
    Up,
    Left = index,
    Right, // Enum member must have initializer.
}
```ts
let index = () => 3
enum Direction{
    Up,
    Left = index(),
    Right, // Enum member must have initializer.
}
const index = 3
enum Direction{
    Up,
    Left = index ,
    Right, // 不用手动赋值
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值