TS学习笔记03-枚举类型

一个js判断角色的例子

function initRole(role){
  if(role === 1  || role ===2){
    // do sth
  } else if(role === 3 || role == = 4){
    // do sth
  } else {
    // do sth 
  }
}

此方法来判断角色的权限来做一些不同的操作,但有两个问题。

  • 可读性差,你得记住每个数字代表角色
  • 可维护性差,硬编码,牵一发动全身。

ts中的枚举类型,就可以比较好的解决这一问题。

数字枚举

enum Role {
  user,                   //  user = 1
  admin,
  superAdmin,
  owner
}
console.log(Role.user) 
console.log(Role)

在这里插入图片描述
也可以给枚举类型赋上初始值。如上面 user =1 , 后面的值就会跟着排序。

字符串枚举

// 字符串枚举
enum Message {
  Success = '成功了',
  Fail = '失败了'
}
console.log(Message.Success)
console.log(Message)

在这里插入图片描述
字符串枚举不会反向映射,因此得不到数字。

异构枚举

// 异构枚举Y
enum Any {
  x,
  y = 'yes'
}
console.log(Any.x)
console.log(Any)

在这里插入图片描述
但是这里容易产生混淆,所以不建议使用。

枚举成员

在这里插入图片描述
枚举成员的值,是不允许修改的,如图显示,他是只读属性。
在这里插入图片描述
其中成员又分为 常量成员需要被计算的成员(即非常量的表达式,他不会在编译阶段运算,而是在执行阶段运算),同时在computed后面的成员,必须得赋初始值,不然会如上图报错。

常量枚举

用const声明的枚举,就是常量枚举,特性是在编译阶段会被移除。

// 常量枚举
const enum Month {
  Jan,
  Feb,
  Mar
}
let month = [Month.Jan, Month.Feb, Month.Mar]
console.log(month)

作用是 当我们不需要一个对象,而需要一个对象的值的时候,就可以用常量枚举。这样可以减少我们在编译环境时的代码。
在这里插入图片描述

用枚举来写第一个例子

enum Role {
  user = 1,
  admin,
  superAdmin,
  owner
}

function initRole(role:number){
  if(role === Role.user  || role === Role.admin){
    // do sth
  } else if(role === Role.superAdmin || role === Role.owner){
    // do sth
  } else {
    // do sth 
  }
}

initRole(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值