0Pricing
TypeScript Academy · 课时

枚举:数值常量与字符串常量

使用枚举替代难以理解的字符串和数字

枚举:数值常量与字符串常量 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 4 节课。

欢迎

枚举允许您定义一组具名常量值。它们用可读的名称替代难以理解的数字和字符串,并由 TypeScript 强制执行类型约束。

数值枚举

默认情况下,枚举成员会被分配从 0 开始自动递增的数字。
enum Direction {
  Up,    // 0
  Down,  // 1
  Left,  // 2
  Right, // 3
}
console.log(Direction.Up); // 0

自定义数值枚举值

您可以设置起始值,也可以覆盖单个成员的值。后续成员会从最近设置的值开始自动递增。
enum Status {
  Active = 1,
  Inactive, // 2
  Banned = 100,
}

字符串枚举

字符串枚举要求为每个成员显式指定值。与数字相比,它们在日志和序列化数据中更具可读性。
enum Color {
  Red = 'RED',
  Green = 'GREEN',
  Blue = 'BLUE',
}

在函数中使用枚举

将枚举类型用作参数类型,可以将值限制在已定义的集合内。
function move(dir: Direction): void {
  console.log('Moving:', Direction[dir]);
}
move(Direction.Up);

反向映射(仅限数值枚举)

数值枚举支持反向映射:您可以根据值查找成员名称。字符串枚举不支持此功能。
enum Status { Active = 1, Inactive = 2 }
console.log(Status[1]); // 'Active'
console.log(Status.Active); // 1

常量枚举

`const enum` 会在编译时内联,因此不会生成 JavaScript 对象。这样可以减小打包体积,但会限制运行时检查。
const enum Axis { X, Y, Z }
const a = Axis.X; // compiled to: const a = 0;

枚举与字面量联合类型

许多 TypeScript 开发者更喜欢使用字面量联合类型,而不是枚举。它们更加轻量,并且不需要运行时代码。
// Enum
enum Dir { Up = 'UP', Down = 'DOWN' }

// Union literal (preferred by many)
type Dir2 = 'UP' | 'DOWN';

异构枚举(应避免)

在同一个枚举中混用字符串值和数值是允许的,但容易造成混淆。请避免使用这种模式。
// Avoid:
enum Mixed { A = 1, B = 'bee' }

枚举在运行时是真实对象

与接口和类型别名不同,枚举会生成 JavaScript 代码。编译后的结果是一个 JavaScript 对象,其中包含名称到值以及值到名称的映射(后者仅适用于数值枚举)。

遍历枚举值

在运行时,可以对枚举对象使用 Object.values() 或 Object.keys() 来遍历其成员。
enum Role { Admin = 'ADMIN', User = 'USER', Guest = 'GUEST' }
const roles = Object.values(Role);
console.log(roles); // ['ADMIN', 'USER', 'GUEST']

快速检查

哪种枚举类型支持反向映射(根据值查找名称)?

回顾

枚举将具名常量集合定义为真实的 JavaScript 对象。请使用字符串枚举提高可读性,使用常量枚举提升性能,并考虑将字面量联合类型作为更轻量的替代方案。

常见问题解答

「枚举:数值常量与字符串常量」课时是免费的吗?

是的 — 「枚举:数值常量与字符串常量」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 4 节课。

「枚举:数值常量与字符串常量」这节课中我会学到什么?

使用枚举替代难以理解的字符串和数字 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「枚举:数值常量与字符串常量」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 类型化数组:T[] 与 Array
  2. Readonly 数组与不可变数据
  3. 元组:固定长度的类型化数组
  4. 枚举:数值常量与字符串常量
← 返回 TypeScript Academy