希望老师解释下枚举

来源:2-12 枚举(Enum)

hy_wang

2021-03-26

enum GenderEnum {
  '未知' = 0,
  '男' = 1,
  '女' = 2,
}

 const transformGender = (value: GenderEnum) => {
    return GenderEnum[value]
  }

老师可以稍微解释下这里的代码吗,GenderEnum作为了类型传入。我不太理解这里是什么意思。老师能稍微解释下吗,枚举可以直接用作值我清楚比如GenderEnum.0 = '未知'。但是用作类型代表是什么意思,

transformGender(1)

这样的代码也没有报错。

写回答

1回答

张轩

2021-03-26

同学你好 和上个问题对比  你替换了代码 这次没有用 常量枚举,也就是变成了

enum GenderEnum {
  '未知' = 0,
  '男' = 1,
  '女' = 2,
}

这种会创建一个双向的数据结构,就像你描述的一样

GenderEnum作为了类型传入,这里是数字枚举,所以它是被当作数字类型的,这样正好对应了你所说的
GenderEnum[0]
如果你
type Test = keyof GenderEnum
查看 Test 的话,发现它会列举出 number 的一系列方法

再次重申,enum 最好别这样用,你就把它看成一些固定值的别称而已,你这个场景使用 对象 处理就完了。

0
1
hy_wang
非常感谢!
2021-04-03
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程