@IT·互联网

TypeScript -- 枚举类型

2019-11-30  本文已影响0人  _路明非_

    1,一个角色判断的例子

    2,枚举
  https://www.tslang.cn/play/index.html

    3,例子
// 数字枚举
enum Role {
  Reporter,
  Developer,
  Maintainer,
  Owner,
  Guest
}
// console.log(Role.Reporter) // 0

// 字符串枚举
enum Message {
  Success = '成功',
  Fail = '失败'
}

// 异构枚举(容易混淆,不建议使用)
enum Answer {
  N,
  Y = 'Yes'
}

// 枚举成员
enum Char {
  // 枚举成员的类型一共分为两类 
  // 1,常量枚举--const(会在编译的时候计算出结果,然后以常量的形式出现在运行时环境)
  // 2,需要被计算的枚举成员--computed(会被保留在程序的执行阶段)
  // 常量枚举包括三种情况 
  a, // const 没有初始值的情况
  b = Char.a,// const 对已有成员的引用
  c = 1 + 3, // const 常量的表达式
  d = Math.random(),
  e = '123'.length,
  f = 4 // 在computed后面的常量枚举,必须有初始值
}

// 常量枚举(用const声明的就是常量枚举)
// 会在编译阶段被移除
// 作用:当我们不需要一个对象,而需要一个对象的值的时候,减少在编译环境的代码const enum Month {
  Jan,
  Feb,
  Mar
}
let month = [Month.Jan, Month.Feb, Month.Mar]

//枚举类型
enum E { a, b}
enum F { a = 0, b = 1 }
enum G { a = 'a', b = 'b' }
let e: E = 3
let f: F = 3
// e === f // 两种不同枚举类型是不可以比较的
let e1: E.a = 1
let e2: E.b
// e1 === e2 // 是永远不可以进行比较的
let e3: E.a =2
// e1 === e3 // 相同的枚举类型是可以比较的
//字符串枚举的取值只能是枚举成员的类型
let g1: G = G.b
let g2: G.a = G.a

上一篇下一篇

猜你喜欢

热点阅读