TS的枚举类型enum
2022-03-31 13:01:59 1 举报
AI智能生成
前端开发,TS学习,枚举类型,enum
作者其他创作
大纲/内容
事先考虑某一个变量的所有可能的值,尽量用自然语言中的代词表示它的每一个值
比如性别(男女)、月份(1-12)、星期(一-日)、颜色(红橙黄绿蓝靛紫)...
枚举类型用于定义数值集合
编译后的 .js 文件:编译工具:https://www.typescriptlang.org/play
我们以上面的枚举为例:
声明一个 Gender 变量 并且初始值 是 空对象
第一步 var Gender
将 Gender 对象 作为自执行函数的 实参传入
第二步 (function (Gender) {...})(Gender || (Gender = {}));:
Gender = { \"GIRL\
给 Gender 对象 的 “GIRL” 属性赋值为 0
第三步 Gender[\"GIRL\"] = 0 :
给 Gender 对象 新增一个 属性名为“0” 的属性,并且给其赋值为 \"GIRL\"
第四步 Gender[Gender[\"GIRL\"] = 0] = \"GIRL\" :
以此类推...
步骤分析
这也是为什么 枚举 可以正反向同时映射的原因。
正向映射即:name => value
反向映射即: name <=> value
所以最终结果是
枚举的本质
数字枚举
字符串枚举不支持反向映射
字符串枚举
通常情况下我们很少会这样使用枚举,但是从技术的角度来说,它是可行的。
异构枚举
在声明枚举前加一个 const 声明
常数枚举
几种常见的枚举
枚举成员分为 常量枚举成员 const 和 需要被计算的枚举成员 computed
没有初始值的枚举成员
对已有枚举成员的引用
常量表达式
常量枚举成员 会在编译时 就计算出结果,然后以常量的形式出现在 运行环境
常量枚举成员
一些非常量的表达式
需要被计算的枚举成员 在编译时 结果被保留,在运行时才会被计算
在 computed 之后的枚举成员一定要赋值,否则会抛错
注意
需要被计算的枚举成员
枚举成员的类型
在某些情况下,枚举和枚举成员都可以作为一种类型使用
1、枚举成员没有任何初始值
2、枚举成员都是数字类型
3、枚举成员都是字符串类型(整个枚举不能作为类型使用,只能使用枚举成员作为类型)
两个枚举之间不可以进行比较
枚举类型与枚举成员类型使用
枚举类型与枚举成员的类型
编译为 JavaScript 后的代码
枚举合并
TS的枚举类型 enum
0 条评论
回复 删除
下一页