typescript枚举类型

49 阅读1分钟

使用枚举,通过enum关键字定义

//默认枚举是从0开始
enum Types {
  RED,
  GREEN,
  BLUE,
}
//增长枚举是从2开始递增
enum Color {
  RED = 2,
  GREEN,
  BLUE,
}
//也可以自定义枚举
enum A {
  RED = 2,
  GREEN = 4,
  BLUE = 6,
}
//字符串枚举不会递增,必须全部定义
/**
 * 由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。
 * 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,
 * 这个值通常是很难读的 - 它并不能表达有用的信息,
 * 字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。
 */
enum B {
  RED = "red",
  GREEN = "green",
  BLUE = "blue",
}
//异构枚举,可以混合使用字符串和数字
enum C {
  Yes = 1,
  No = "No",
}
//接口枚举
interface D {
  red: B.RED;
}
let obj: D = {
  red: B.RED,
};
//const枚举
/**
 * let  和 var 都是不允许的声明只能使用const
 * 大多数情况下,枚举是十分有效的方案。 然而在某些情况下需求很严格。
 * 为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问,
 * 我们可以使用 const枚举。 常量枚举通过在枚举上使用 const修饰符来定义
 * const 声明的枚举会被编译成常量
 * 普通声明的枚举编译完后是个对象
 */
const enum E {
  success,
  fail,
}
//反向映射,需要注意的是不会为字符串生成反向映射
enum F {
  fall,
}
let fall: number = F.fall; // 0
let key: string = F[fall]; // fall