前端 TS 快速入门之六:枚举 enum

1. 数字枚举

枚举类型的值是数字类型,因此它们被称为数字类型枚举,成员的值可以不用初始化,因为具有自增行为。

javascript 复制代码
// 默认自增
enum Person {
  name,
  age,
}
Person.name; // 0
Person.age; // 1

// 可人为自行修改
enum Person {
  name = 2,
  age = 1,
}
Person.name; // 2
Person.age; // 1

2. 数字枚举的反向映射

数字枚举成员还具有 反向映射 的特性,从枚举值到枚举名字,要注意的是 不会为字符串枚举成员生成反向映射。

javascript 复制代码
enum Person {
  name,
  age,
}
Person; // { '0': 'name', '1': 'age', name: 0, age: 1 }
Person[1]; // age

enum Person {
  name = "名字",
  age = "年龄",
}
Person; // { name: '名字', age: '年龄' }

3. 字符串枚举

在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

javascript 复制代码
enum Person {
  name = "名字",
  age = "年龄",
}
Person.name; // 名字
Person.age; // 年龄

4. 异构枚举

枚举可以混合字符串和数字成员,但一般没必要这么做。

javascript 复制代码
enum Person {
  name = 1,
  age = 2,
  man = "男",
  wuman = "女",
}
Person.name; // 1
Person.man; // 男

5. 常量枚举

用 const 修饰符来定义,常量枚举不同于常规的枚举,他们会在编译阶段被删除。

因此常量枚举会带来一个对性能的提升。

javascript 复制代码
const enum Size {
  WIDTH = 10,
  HEIGHT = 20,
}
const area = Size.WIDTH * Size.HEIGHT; // 200
Size; // 'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query

上一章:前端 TS 快速入门之五:泛型 T

相关推荐
slongzhang_26 分钟前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
北冥有鱼27 分钟前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚27 分钟前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601833 分钟前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能43 分钟前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师44 分钟前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端
alsmile1 小时前
AI友好的可视化图形引擎自我革命:Meta2d.js 2.0 历时一年全新重写,性能与多人协作全面升级
前端·开源·数据可视化
行思理1 小时前
Nginx 跨站请求(CORS)配置完全指南:从原理到生产实践
java·前端·nginx
粥里有勺糖1 小时前
视野修炼-技术周刊第137期 | 编程已经面目全非
前端·github·ai编程
IT_陈寒1 小时前
Python的列表推导式用不好真的会爆内存你知道吗
前端·人工智能·后端