在 javaScript 中是没有枚举
的概念的 TS 帮我们定义了枚举这个类型
enum 关键字定义枚举
数字定义枚举
默认从0开始的
enumColor{
red,
green,
blue
}
console.log(Color.red,Color.blue,Color.green)//能够得到他们的顺序数字,这里返回0,2,1
增长枚举
能够通过自定义开头决定从哪个数字开始枚举,其他位置的都可以定义,后面的数字就按顺序枚举
enumColor{
red=2,
green,
blue
}
console.log(Color.red,Color.blue,Color.green)//能够得到他们的顺序数字,这里返回2,4,3
字符串枚举
字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的 - 它并不能表达有用的信息,字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。
enumTypes{
Red='red',
Green='green',
BLue='blue'
}
异构枚举
枚举可以混合字符串和数字成员
enumTypes{
No="No",
Yes=1,
}
console.log(Types.NO,Types.Yes)
接口枚举
定义一个枚举 Types 定义一个接口 A 他有一个属性 red 值为 Types.yyds
声明对象的时候要遵循这个规则
enumColor{
no="NO",
yes=1
}
interfaceA{
red:Color.yes
}
letB:A{
red:Color.yes
//或者直接red:1,只能填入这两个内容其中之一,其他的会报错
}
const枚举
let 和 var 都是不允许的声明只能使用 const
大多数情况下,枚举是十分有效的方案。 然而在某些情况下需求很严格。 为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问,我们可以使用
const
枚举。 常量枚举通过在枚举上使用const
修饰符来定义const 声明的枚举会被编译成常量
普通声明的枚举编译完后是个对象
constenumTypes{//有没有const决定是编译成对象还是编译成常量
sucess,
fail
}
letcode:number=0
if(code===sucess){//是能执行的
console.log("我在人民广场吃炸鸡")
}
反向映射
它包含了正向映射(
name
->value
)和反向映射(value
->name
)要注意的是 不会为字符串枚举成员生成反向映射。
enumTypes{
one
}
letsuccess:number=Types.success
console.log(success)//读取得出来为0
enumTypes{
success
}
letsuccess:number=Types.success
letkey=Types[success]
console.log(`value---${success}`,`key----${key}`)//value---0,key----success