提出问题
当变量的值是 红灯 时,打印 红灯停;值是 绿灯 时,打印 绿灯行;值是 黄灯 时,打印 黄灯警示
实现:
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 开始递增:
// 定义枚举
enum Color {
Red, // 0
Green, // 1
Yello, // 2
}
使用
// 使用枚举
let c: Color = Color.Red;
console.log(c); // 输出:0
console.log(Color[0]); // 输出:"Red"
自定义枚举值
可以为枚举成员指定自定义值(数字或字符串):
例子1
// 数字枚举(可指定初始值,后续成员自动递增)
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 定义常量枚举,编译时会被直接替换为对应的值,减少运行时开销:
const enum Weekday {
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Sun
}
let day: Weekday = Weekday.Fri;
console.log(day); // 输出:4(编译后直接替换为 4)
注意:常量枚举不支持反向映射(如
Weekday[4]会报错)。