- TS 中支持兩種枚舉, 一種是
數字枚舉
, 一種是字符串枚舉
數字枚舉
默認情況下就是數字枚舉
enum Gender {
Male,
Female
}
console.log(Gender.Male);
console.log(Gender.Female);
數字枚舉注意點
- 數字枚舉的取值默認從
0
開始遞增
enum Gender {
Male,
Female
}
console.log(Gender.Male);
console.log(Gender.Female);
- 數字枚舉的取值可以是字面量, 也可以是常量, 也可以是計算的結果
字面量:
enum Gender {
Male = 1,
Female
}
console.log(Gender.Male);
console.log(Gender.Female);
常量,如果使用常量給前面的枚舉值賦值了, 那么后面的枚舉值也需要手動的賦值:
const num = 666;
enum Gender {
Male = num,
Female = 1
}
console.log(Gender.Male);
console.log(Gender.Female);
計算的結果,如果使用計算結果給前面的枚舉值賦值了, 那么后面的枚舉值也需要手動的賦值:
function getNum() {
return 888;
}
enum Gender {
Male = getNum(),
Female = 1
}
console.log(Gender.Male);
console.log(Gender.Female);
枚舉反向映射
- 可以根據枚舉值獲取到原始值
enum Gender {
Male,
Female
}
console.log(Gender.Male);
- 也可以根據原始值獲取到枚舉值
enum Gender {
Male,
Female
}
console.log(Gender[0]);
字符串枚舉
- 如果使用字符串給前面的枚舉值賦值了, 那么后面的枚舉值也必須手動賦值
enum Gender {
Male = 'www.it6666.top',
Female = 'BNTang'
}
console.log(Gender.Male);
console.log(Gender.Female);
字符串枚舉注意點
- 如果使用字符串給前面的枚舉值賦值了, 那么后面的枚舉值也必須手動賦值上面已經介紹了
- 和數字枚舉不一樣, 字符串枚舉不能使用常量或者計算結果給枚舉值賦值
- 雖然字符串枚舉不能夠使用常量或者計算結果給枚舉值賦值, 但是它可以使用內部的其它枚舉值來賦值
enum Gender {
Male = 'BNTang',
Yao = Male
}
console.log(Gender.Male);
console.log(Gender.Yao);
異構枚舉
- 枚舉中既包含數字又包含字符串, 我們就稱之為
異構枚舉
enum Gender {
Male = 6,
Female = 'nv'
}
console.log(Gender.Male);
console.log(Gender.Female);
注意點:如果是字符串枚舉, 那么無法通過原始值獲取到枚舉值:
enum Gender {
Male = 6,
Female = 'nv'
}
console.log(Gender['nv']);
console.log(Gender);