TypeScript:枚举(废弃) 作者:马育民 • 2025-09-28 23:10 • 阅读:10005 # 提出问题 当变量的值是 `红灯` 时,打印 `红灯停`;值是 `绿灯` 时,打印 `绿灯行`;值是 `黄灯` 时,打印 `黄灯警示` 实现: ``` let color:string = "红灯"; if( "红灯" == color ){ console.log("红灯停"); }else if( "绿灯" == color ){ console.log("绿灯行"); }else{ console.log("黄灯警示!"); } ``` ### 缺点 变量 `color` 可以是 **不合理的值**,如: ``` let color:string = "白灯"; ``` 或者 ``` let color:string = "李雷"; ``` ### 解决 使用枚举 # 枚举介绍 枚举(Enum)是一种特殊的数据类型,用于定义一组命名的常量集合,使代码更具可读性和可维护性。枚举在鸿蒙应用开发中常用于表示固定的状态、类型或选项集合。 ### 特点 - **类型安全**:枚举成员是特定类型,避免使用魔术数字或字符串导致的错误。 - **反向映射**:数字枚举支持通过值获取成员名称(如 `Direction[0]` 返回 `"Up"`)。 - **不可修改**:枚举成员的值在定义后不可更改。 通过枚举,可以使代码逻辑更清晰,尤其在处理多状态、多选项的场景中非常实用 ### 应用场景 在有固定的几个值时,就应该用枚举,例子: - 学历:博士、硕士、本科、专科 - 星期:星期一、星期二、星期日 # 基本枚举定义 枚举通过 `enum` 关键字定义,默认情况下,枚举成员的值从 `0` 开始递增: ```typescript // 定义枚举 enum Color { Red, // 0 Green, // 1 Yello, // 2 } ``` ### 使用 ``` // 使用枚举 let c: Color = Color.Red; console.log(c); // 输出:0 console.log(Color[0]); // 输出:"Red" ``` # 自定义枚举值 可以为枚举成员指定自定义值(数字或字符串): ### 例子1 ```typescript // 数字枚举(可指定初始值,后续成员自动递增) enum Status { Success = 200, NotFound = 404, Error = 500 } console.log(Status.Success); // 输出:200 ``` ### 例子2 ``` // 字符串枚举(必须为每个成员指定字符串值) enum Color { Red = "RED", Green = "GREEN", Blue = "BLUE" } console.log(Color.Green); // 输出:"GREEN" ``` ### 例子3 ``` // 混合类型枚举(不推荐,易混淆) enum Mixed { A, // 0 B = "B", C = 10, D // 11(基于上一个值递增) } ``` # 常量枚举 使用 `const enum` 定义常量枚举,编译时会被直接替换为对应的值,减少运行时开销: ```typescript const enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun } let day: Weekday = Weekday.Fri; console.log(day); // 输出:4(编译后直接替换为 4) ``` > 注意:常量枚举不支持反向映射(如 `Weekday[4]` 会报错)。 原文出处:http://malaoshi.top/show_1GW1wi5hbobb.html