1、数字定义枚举
enum Color {
red, // 默认从0开始
green,
yellow
}
console.log(Color.red) // 0
console.log(Color.green) // 1
console.log(Color.yellow) // 2
2、增长枚举
enum Color1 {
red = 2, // 默认从0开始
green,
yellow
}
console.log(Color1.red) // 2
console.log(Color1.green) // 3
console.log(Color1.yellow) // 4
3、自定义枚举
enum Color2 {
red = 2, // 默认从0开始
green = 6,
yellow = 10
}
console.log(Color2.red) // 2
console.log(Color2.green) // 6
console.log(Color2.yellow) // 10
4、字符串枚举(符串枚举,要给初始值,不然报错)
enum str {
name = 'huangzi',
sex = '女',
color = 'yellow'
}
console.log(str.name) // huangzi
console.log(str.sex) // 女
console.log(str.color) // yellow
5、异构枚举
enum str1 {
name = 'huangzi',
sex = '女',
// age, 如果前一个是字符串枚举,下一个要给初始值,不然报错
age = 20,
age1,
color = 'yellow'
}
console.log(str1.name) // huangzi
console.log(str1.sex) // 女
console.log(str1.age) // 20
console.log(str1.age1) // 21
console.log(str1.color) // yellow
6、接口枚举
enum str1 {
name = 'huangzi',
sex = '女',
age = 20,
}
interface A {
age: str1.age
}
let obj: A = {
age: str1.age // str1.age或者20都可以。不可以取别的值,结果只能为枚举str1中age的值20
}
7、const枚举
// 使用const不会编译为对象(直接把值编译出来),不使用const会编译为对象
const enum Types { // 用let、var报错,可以使用const
no,
yes,
}
if (Types.no === 0) {
console.log('tsc 进行编译文件看看');
}
加了const:
没加const:
8、反向映射
// 可以用key读取value,也可以通过value读取key
enum Types {
age
}
let value: number = Types.age
let key = Types[value]
console.log(`key:${key},`, `value:${value}`); // key:age, value:0