- 解決的開發(fā)問題:
在實際的開發(fā)過程中,可能會遇到以下的場景
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