TypeScript-数字枚举和字符串枚举
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 = 'yangbuyiya' } console.log(Gender.Male); console.log(Gender.Female);
字符串枚举注意点
- 如果使用字符串给前面的枚举值赋值了, 那么后面的枚举值也必须手动赋值上面已经介绍了
- 和数字枚举不一样, 字符串枚举不能使用常量或者计算结果给枚举值赋值
- 虽然字符串枚举不能够使用常量或者计算结果给枚举值赋值, 但是它可以使用内部的其它枚举值来赋值
enum Gender { Male = 'yangbuyiya', 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);
最后
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗