HarmonyOS5ArkTS常见数据类型认识

在 ArkTS(基于 TypeScript 的 HarmonyOS 开发语言)中,常见数据类型主要分为基础类型和复杂类型两大类,以下是核心整理:


⚙️ ​​一、基础类型(Primitive Types)​

  1. number

    • 数值类型,包含整数和浮点数(​无单独的 int/float 区分​
    ini 复制代码
    typescript
    复制
    let age: number = 30;       // 整数
    let price: number = 9.99;   // 浮点数
  2. string

    • 文本类型,支持单引号/双引号/模板字符串
    ini 复制代码
    typescript
    复制
    let name: string = "Alice";
    let msg: string = `Hello ${name}`;  // 模板字符串
  3. boolean

    • 布尔值,仅 truefalse
    ini 复制代码
    typescript
    复制
    let isActive: boolean = true;
  4. void

    • 函数无返回值
    javascript 复制代码
    typescript
    复制
    function logError(): void {
      console.error("Error!");
    }
  5. nullundefined

    • null:显式空值
    • undefined:变量未初始化默认值
    csharp 复制代码
    typescript
    复制
    let data: string | null = null;  // 联合类型允许赋值为 null

🧩 ​​二、复杂类型(Complex Types)​

​集合类型​

  1. ​数组 Array<T>

    • 相同类型元素集合
    typescript 复制代码
    typescript
    复制
    let numbers: number[] = [1, 2, 3];
    let strings: Array<string> = ["a", "b"]; // 泛型语法
  2. ​元组 Tuple

    • ​固定长度​​类型顺序​的数组
    typescript 复制代码
    typescript
    复制
    let userInfo: [string, number] = ["Alice", 25];
    let firstElement: string = userInfo[0]; // 类型安全访问
  3. ​枚举 enum

    • 命名常量集合(自动赋值或手动指定)
    ini 复制代码
    typescript
    复制
    enum Color { Red = 1, Green, Blue }; // Green=2, Blue=3
    let bg: Color = Color.Green;

​对象类型​

  1. ​接口 Interface

    • 定义对象结构(​最常用​
    ini 复制代码
    typescript
    复制
    interface User {
      id: number;
      name: string;
      isAdmin?: boolean;  // 可选属性
    }
    
    let user: User = { id: 1, name: "Bob" };
  2. ​类 Class

    • 面向对象编程(封装/继承/多态)
    typescript 复制代码
    typescript
    复制
    class Person {
      constructor(public name: string) {}
      greet() { console.log(`Hello ${this.name}`) }
    }

​特殊类型​

  1. ​联合类型 |

    • 变量可多选类型
    ini 复制代码
    typescript
    复制
    let id: string | number;
    id = "001";  // 合法
    id = 100;    // 合法
  2. ​字面量类型​

    • 固定值作为类型(常与联合类型配合)
    ini 复制代码
    typescript
    复制
    type Direction = "left" | "right" | "up" | "down";
    let move: Direction = "left"; // 只能赋值指定值
  3. any

    • 关闭类型检查(慎用!失去TS优势)
    ini 复制代码
    typescript
    复制
    let unknownData: any = fetchExternalData(); 
  4. Resource(ArkUI特有)​

    • 引用本地资源文件
    less 复制代码
    typescript
    复制
    Image($r('app.media.logo'))  // 加载resources中的图片

🛡️ ​​三、类型守卫与类型推断​

  1. ​类型守卫​

    • 运行时检查类型(typeof/instanceof
    typescript 复制代码
    typescript
    复制
    function printId(id: number | string) {
      if (typeof id === "string") {
        console.log(id.toUpperCase()); // 自动识别为string
      } else {
        console.log(id.toFixed(2));    // 自动识别为number
      }
    }
  2. ​类型别名 type

    • 为复杂类型命名
    ini 复制代码
    typescript
    复制
    type UserID = string | number;
    type Callback = () => void;

💎 ​​核心数据类型总结表​

​类型​ ​示例​ ​典型场景​
number let count: number = 5; 数值计算
string let msg: string = "Hi"; 文本展示
boolean let isDone: boolean = false; 条件判断
Array<T> let list: number[] = [1,2,3]; 数据集合
Interface interface User { id: number } 结构化数据定义
Union Types `let id: string number;`
Resource $r('app.string.title') 本地化资源引用

实际开发建议:

  1. ​优先使用接口定义对象结构​
  2. ​避免 any 充分利用TS静态检查​
  3. ​联合类型+类型守卫提高安全性​
  4. ​善用资源类型加载本地文件​
相关推荐
缘澄16 分钟前
组件基础-List&Tabs
harmonyos
爱笑的眼睛1115 小时前
HarmonyOS TextArea 组件:文本输入区域的简单使用指南
华为·harmonyos
前端世界15 小时前
鸿蒙异步处理从入门到实战:Promise、async/await、并发池、超时重试全套攻略
华为·harmonyos
祥睿夫子16 小时前
鸿蒙ArkTS开发:Number、Boolean、String三种核心基本数据类型详解(附实战案例)
harmonyos·arkts
小喷友16 小时前
第5章 高级UI与动画
前端·app·harmonyos
whysqwhw16 小时前
鸿蒙ArkTS 与 Native 交互场景分类总结与关键实现
harmonyos
爱笑的眼睛1117 小时前
HarmonyOS 递归实战:文件夹文件统计案例解析
华为·harmonyos
鸿蒙小白龙18 小时前
openharmony之启动恢复子系统详解
harmonyos·鸿蒙·鸿蒙系统
GeniuswongAir21 小时前
交叉编译.so到鸿蒙使用
华为·harmonyos
keepDXRcuriosity1 天前
ArkTS 语言全方位解析:鸿蒙生态开发新选择
华为·harmonyos·arkts·鸿蒙