📅  最后修改于: 2023-12-03 15:35:24.813000             🧑  作者: Mango
枚举(Enums)在程序开发中扮演了很重要的角色,通过为一组数据集合取一个可读的名字,可以使程序更具可读性。TypeScript提供了枚举类型来定义命名的常量集合及其值。
枚举类型可以通过 enum
表达式来定义,值可以是数值、字符串或者是另一个枚举成员。
enum Direction {
Up = 1,
Down,
Left,
Right
}
console.log(Direction.Up) // 输出 1
console.log(Direction[1]) // 输出 Up
上面的例子中,我们定义了一个枚举类型 Direction
,并为每一个成员指定了数值。默认情况下,枚举成员从 0
开始自动编号,但是也可以手动指定它们的值。如果没有手动指定,那么它们的值会从前一个成员的值累加而来。
当我们需要操作一些原始值的时候,可以使用数字枚举。在上面的例子中,我们指定了每一个枚举成员的数值。如果一个枚举成员没有被赋值,那么它的值等于前一个枚举成员的值加 1。如果第一个枚举成员没有被赋值,那么它的值默认为 0。
enum Direction {
Up,
Down,
Left,
Right
}
console.log(Direction.Up) // 输出 0
console.log(Direction.Down) // 输出 1
我们也可以改变枚举成员的值,如下所示:
enum Direction {
Up = 1,
Down,
Left,
Right
}
console.log(Direction.Up) // 输出 1
console.log(Direction.Down) // 输出 2
字符串枚举与数字枚举基本相同,只不过它的值是字符串而不是数字。
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
console.log(Direction.Up) // 输出 UP
console.log(Direction.Down) // 输出 DOWN
异构枚举包含了数字和字符串成员,这在实际开发中比较少用到。
enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES"
}
枚举在运行时是真正存在的对象。上面我们使用了 console.log(Direction.Up)
来输出 Up
的值。我们也可以通过 Object
来获取枚举对象。
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
const direction = Object.keys(Direction).reduce((result, key) => {
const value = Direction[key];
if (typeof value === "string") {
result.push(value);
}
return result;
}, []);
console.log(direction) // 输出 ["UP", "DOWN", "LEFT", "RIGHT"]
本文介绍了 TypeScript 枚举的基本概念和使用方法,包括数字枚举和字符串枚举。枚举可以大大增强程序的可读性和可维护性,希望可以对读者有所帮助。