- 解决的开发问题:
在实际的开发过程中,可能会遇到以下的场景
function getResult(status){
if(status === 0){
return 'OFFLINE'
}else if(status === 1){
return 'ONLINE'
}else if(status === 2){
return 'NORMAL'
}
return 'ERROR'
}
但这样的代码可读性并不是很好,使用对象的形式增加一下代码的可读性
const STATUS = {
OFFLINE:0,
ONLINE:1,
NORMAL:2
}
function getResult(status){
if(status === STATUS.OFFLINE){
return 'OFFLINE'
}else if(status === STATUS.ONLINE){
return 'ONLINE'
}else if(status === STATUS.NORMAL){
return 'NORMAL'
}
return 'ERROR'
}
在typescript中,专门有一个枚举类型Enum可以解决这样的场景:
// 定义一个枚举类型
enum STATUS{
OFFLINE,
ONLINE,
NORMAL
}
function getResult(status){
if(status === STATUS.OFFLINE){
return 'OFFLINE'
}else if(status === STATUS.ONLINE){
return 'ONLINE'
}else if(status === STATUS.NORMAL){
return 'NORMAL'
}
return 'ERROR'
}
const result = getResult(0)
console.log('result',result)
// result OFFLINE
- 枚举类型的默认值是从0开始,后面每一属性的值前一个值+1
enum STATUS{
OFFLINE, //0
ONLINE, //1
NORMAL //2
}
- 可以设置属性的默认值
enum STATUS{
OFFLINE = 1, //1
ONLINE = 999, //999
NORMAL //1000
}
- 枚举类型也可以反向映射
enum STATUS{
OFFLINE = 1, //1
ONLINE = 999, //999
NORMAL //1000
}
console.log(STATUS[1])
// OFFLINE