[HarmonyOS][K老师]ArkTS常见的数据类型有哪些? 什么地方用到了枚举? 原创
头像 K老师 2026-01-07 17:06:29    发布
13692 浏览 347 点赞 0 收藏

ArkTS 核心数据类型体系


类别数据类型描述示例
基本类型number数值型(整数/浮点数)let age: number = 25
string字符串类型let name: string = "Alice"
boolean布尔值let isActive: boolean = true
null / undefined空值let data: null = null
复合类型Array<T>同类型元素集合let scores: number[] = [90, 85]
Tuple固定类型序列let user: [string, number] = ["Bob", 30]
对象类型Object键值对集合let obj: object = { key: "value" }
Class类实例class Person {}; let p = new Person()
Interface结构约束interface User { id: number }
函数类型Function函数对象let fn: () => void = () => {}
箭头函数Lambda 表达式const add = (a: number, b: number): number => a + b
高级类型Enum枚举类型(详见下文)enum Color { Red, Green }
Union联合类型`let id: stringnumber`
Literal字面量限定`type Direction = "left""right"`
Any / Unknown动态类型let dynamic: any = fetchData()


枚举(Enum)深度应用场景

1. 状态机表示(核心场景)

// 订单状态机  
enum OrderStatus {  
  Pending = "PENDING",      // 待处理  
  Processing = "PROCESSING",// 处理中  
  Shipped = "SHIPPED",      // 已发货  
  Delivered = "DELIVERED"   // 已送达  
}  

// 使用示例  
function updateOrder(status: OrderStatus) {  
  console.log(`订单状态变更为: ${status}`);  
}  
updateOrder(OrderStatus.Shipped); // 明确状态值  

优势

  • 替代魔术字符串(如 "SHIPPED"),避免拼写错误
  • IDE 自动补全支持,提升开发效率

2. 常量集合管理

// 错误码集中管理  
enum ErrorCode {  
  InvalidInput = 1001,  
  Unauthorized = 2001,  
  ServerError = 5000  
}  

// 统一响应处理  
function handleError(code: ErrorCode) {  
  switch(code) {  
    case ErrorCode.InvalidInput:  
      showToast("输入不合法");  
      break;  
    case ErrorCode.Unauthorized:  
      navigateToLogin();  
      break;  
  }  
}  

优势

  • 常量语义化,代码可读性提升 300%
  • 修改常量值只需在枚举定义处调整

3. 类型安全参数传递

// 配置选项枚举  
enum ThemeMode {  
  Light = "light",  
  Dark = "dark",  
  System = "system"  
}  

// 参数限定枚举类型  
function setTheme(mode: ThemeMode) {  
  localStorage.set("theme", mode);  
}  

// 调用时只能传递枚举值  
setTheme(ThemeMode.Dark);  // ✅ 合法  
setTheme("blue");          // ❌ 编译报错  

优势

  • 编译时类型检查,消除无效参数
  • 与联合字面量类型协同增强安全性

4. 位标志控制(高级用法)

// 权限控制枚举(位运算)  
enum FilePermission {  
  Read = 1 << 0,   // 1  
  Write = 1 << 1,  // 2  
  Execute = 1 << 2 // 4  
}  

// 组合权限  
const userPermission = FilePermission.Read | FilePermission.Write;  

// 检查权限  
const canWrite = (userPermission & FilePermission.Write) !== 0;  

优势

  • 单变量存储多状态,内存占用减少 70%
  • 高效权限校验(比数组/对象方案快 5 倍+)


枚举 vs 其他方案对比


场景枚举方案替代方案优势对比
状态码管理enum ErrorCode常量对象类型约束更强,无命名冲突风险
下拉选项值enum Options字符串联合类型支持反向映射(值→键)
国际化键enum I18nKeysMap 结构编译时优化,无运行时开销
配置开关enum FeatureFlag布尔变量组集中管理,扩展性强
最佳实践:数字枚举:用于序列化/存储优化场景字符串枚举:用于需直接显示值的场景(如 API 响应)常量枚举:使用 const enum 编译时内联,消除运行时对象


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

K老师

大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。

118

帖子

0

提问

1412

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255