ts类型-枚举

枚举是组织收集有关联变量的一种方式,通过组织特殊类型的变量,使得代码更易读。

数字类型

enum Weekday {
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday,
  Sunday
}

Weekday.Monday // 0
Weekday.Tuesday // 1

数字类型的枚举默认从数值0开始,依次递增。当然也可以通过赋值的方式改变这个值

enum Weekday {
    Monday=1,
    Tuesday,
    Wednesday,
    Thursday = 2,
    Friday,
    Saturday,
    Sunday
}

Weekday.Monday // 1
Weekday.Tuesday // 2
Weekday.Wednesday // 3
Weekday.Thursday // 2

说明:枚举值是只读的

字符串类型

enum Codes {
    SUCCESS = '10000',
    NO_PRO = '10002',
    ERROR = '20000',
    LOW_VERSION = '20001'
}

// code 是服务端返回的
if(code === Codes.LOW_VERSION) {
    // 处理版本过低的逻辑
}

常量枚举

可以使用const关键字定义常量枚举

const enum Codes {
    SUCCESS = '10000',
    NO_PRO = '10002',
    ERROR = '20000',
    LOW_VERSION = '20001'
}

const success = Codes.SUCCESS // '10000'

使用常量定义枚举的好处是编译后的代码更加简洁,性能也更好一些

有静态方法的枚举

枚举类型不仅可以定义数值和字符串,使用enum + namespace 的声明的方式可以向枚举类型添加静态方法

enum Weekday {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
  }
  
  namespace Weekday {
      // 验证是否是工作日
    export function isBusinessDay(day: Weekday) {
      switch (day) {
        case Weekday.Saturday:
        case Weekday.Sunday:
          return false;
        default:
          return true;
      }
    }
  }
  
  // 使用
  Weekday.isBusinessDay(Weekday.Monday); // true
  Weekday.isBusinessDay(Weekday.Sunday); // false
posted @ 2021-10-15 20:14  wmui  阅读(823)  评论(0编辑  收藏  举报