Skip to content

枚举

数字枚举

当数字枚举没有指定具体的值的时候,默认从 0 开始

js
enum Status{
   "删除",
   "新增",
   "更新",
}

console.log(Status.删除)  //0
console.log(Status.新增)  //1
console.log(Status.更新)  //2

当我们指定了具体的值以后,就从具体的值开始

js
enum Status {
  "删除",
  "新增" = 300,
  "更新",
}

console.log(Status.删除);
console.log(Status.新增);
console.log(Status.更新);

//0
//300
//301

特别注意的就是数字枚举要是使用了计算值或者常量,那后面必须设置初始值

js


const Status = 1;  //因为使用了常量

enum Index {
  a = Status,
  b, //error枚举成员必须要具有初始化值
  c
}

const getValue = ()=>{
  return 0 ;
}

enum Index2{
  a = getValue(),
  b = 1,
  c
}

反向映射

反向映射只支持数字枚举,字符串枚举不支持

js

enum Status{
  Success = 200,
  NotFound = 404,
  Error = 500
}

console.log(Status[200])  //'Success'
cosnole.log(Status[Status['Success']])  // 'Success'

字符串枚举

字符串枚举要求每个字段的值都必须是字符串字面量

js

enum Message{
  Error = 'Sorry,error',
  Success = 'Great,success'
}

console.log(Message.Error)  // 'Sorry,error'

其他例子

js

enum Message{
  Error = 'error message',
  ServerError = Error,
  ClientError = Error
}

console.log(Message.ServerError) //error message
console.log(Message.ClientError)  //error message

既有数字又有字符串的枚举

js

enum Result{
  Faild = 0,
  Success = 'Success'
}