ArkTS 基础语法入门:变量声明与数据类型全解析

ArkTS 基础语法入门:变量声明与数据类型全解析

引言

ArkTS 是专门用于 HarmonyOS 应用开发的高级语言。在正式进入鸿蒙应用开发之前,掌握 ArkTS 的基础语法是必要的前提。本节课将从零基础出发,系统讲解 ArkTS 中变量与常量的声明规则、数据类型体系,以及类型安全、类型推断等核心概念,为后续鸿蒙应用开发打下基础。

核心内容

ArkTS 语言基础定位

ArkTS 是基于 TypeScript(简称 TS)扩展升级而来的高级语言,保留了 TS 的基础语法与风格,并新增了两大核心能力:

  • 静态类型检查:在编写代码时及时发现错误。

  • 自动类型推断:简化代码书写。

ArkTS 支持与 TS/JavaScript 高效互操作,可以完全复用现有的 TS/JS 生态,之前用 TS/JS 开发的代码和工具无需重写,可直接复用。

ArkTS 发展历程
阶段关键特性
API 9 版本开始支持声明式 UI 范式,提供声明式 UI 描述、状态管理、渲染控制等 UI 开发能力
API 10-12 版本新增静态类型检查、并发能力增强、空值安全等机制,进一步强化静态检查分析能力,优化并发编程 API
未来演进方向将持续迭代,逐步增加并发能力增强、系统类型增强、分布式开发范式等更多现代语言特性

变量与常量声明

在 ArkTS 中,变量是存储可变数据的"容器",常量是存储不可变数据的"容器"。

声明语法

变量声明:使用let关键字

let count: number = 0;

常量声明:使用const关键字

const MAX_COUNT: number = 100;
变量与常量的核心区别
特性变量(let声明)常量(const声明)
可变性可多次赋值声明后仅能赋值一次,不可修改
声明关键字letconst
命名规范推荐小驼峰命名(如userName推荐全大写 + 下划线分隔(如MAX_VALUE
性能优化运行时动态赋值编译时求值,减少运行时计算开销

示例

let count: number = 0; count = 40; // 允许重新赋值 const MAX_COUNT: number = 100; MAX_COUNT = 10; // 编译报错:无法给常量重新赋值

ArkTS 数据类型体系

ArkTS 的数据类型整体分为基本类型引用类型两大类,另有拓展类型用于特殊场景。

常用基本类型
类型用途示例
string存储文字信息(如商品标题、用户名)'Pura 80'
number存储数字信息,包括整数和小数(如商品价格、年龄)4894
boolean存储状态信息,仅truefalsetrue

使用示例

// 声明不同类型的变量 let title: string = 'Pura 80'; let price: number = 4894; let isChoose: boolean = true; // 控制台打印输出 console.log(title); // 输出: Pura 80 console.log(price.toString()); // 输出: 4894 // 模板字符串语法拼接变量 console.log(`The price of ${title} is ${price}`); // 输出: The price of Pura 80 is 4894

模板字符串说明:使用反引号(ESC 键下方的按键)包裹文本,插入变量使用${变量名}格式。

引用类型

引用类型不直接存储数据本身,而是在内存中存储数据的内存地址,通过引用访问实际数据,适合存储有层级或关联关系的复杂结构。

常用引用类型包括:ObjectArrayEnumClassFunction等。

Object 类型:通用类型,可以容纳任意类型的数据,自带通用方法(如toString())。

let obj: Object = { name: 'Pura 80', price: 4894 }; console.log(obj.toString());

注意:由于Object类型过于宽泛,编辑器无法做针对性类型检查,容易隐藏运行时错误,开发中应尽量少用,优先使用具体类型。

Array 类型:用于存储多个同类型数据,提供长度查询、增删元素等操作。

// 创建存储字符串的数组 let students: string[] = ['XiaoMing', 'XiaoZhang', 'XiaoWang', 'XiaoLi']; console.log(students.length); // 打印数组长度: 4 console.log(students[0]); // 打印索引为0的元素: XiaoMing students.push('XiaoHong'); // 添加元素 → 长度变为5 students.pop(); // 删除末尾元素 → 长度变为4
基本类型与引用类型的核心区别
类型存储方式赋值行为
基本类型直接存储数据值赋值时创建值的独立副本,修改新变量不影响原变量(值复制
引用类型存储数据的内存地址赋值时复制内存地址,多个变量指向同一块内存,修改会影响所有指向该地址的变量(地址复制

示例对比

// 基本类型 —— 值复制 let a: number = 10; let b: number = a; // b 得到 a 的独立副本 b = 20; // 修改 b,a 仍为 10 // 引用类型 —— 地址复制 let arr1: number[] = [1, 2]; let arr2: number[] = arr1; // arr2 与 arr1 指向同一个数组 arr2.push(3); // arr1 也变为 [1, 2, 3]

这是笔试和面试的高频考点,必须理解值复制和地址复制的不同效果。

拓展数据类型

枚举类型(Enum)

枚举类型是预先定义好的一组可选命名值,限制变量只能从预设选项中选择,避免非法值。

// 声明 Color 枚举类型,预设三个可选值 enum Color { Red, Blue, Green } // 只能从预设值中选择 let fontColor: Color = Color.Red;
联合类型

用于一个变量可能支持多种类型的场景,允许变量被赋值为多种指定类型中的任意一种。

let value: string | number; value = 'Hello'; // 合法 value = 42; // 合法 value = true; // 编译报错
类型别名

可以给已存在的类型起一个简洁易记的新名称,简化复杂类型的重复书写。

type ID = string | number; let userId: ID = 'abc123'; let productId: ID = 456;
类型安全

ArkTS 是静态类型安全语言,赋值类型不匹配时编译器会直接报错,提前发现问题,避免运行时出错。

let title: string = 'Pura 80'; title = 20; // 编译报错:类型不匹配
自动类型推导

声明变量并直接赋值时,即使不手动标注类型,编译器也会根据赋值内容自动推导变量类型。

// 未手动标注类型,编译器自动推导 meaningOfLife 为 number 类型 let meaningOfLife = 42;
类型断言

当开发者能通过逻辑确定变量的具体类型,但编译器无法自动判断时,可以使用类型断言明确告诉编译器变量的具体类型。

// 使用 as 关键字进行类型断言 let someObj: object = 'Hello World'; let value: string = someObj as string;

注意:如果开发者类型判断错误,会导致运行时错误。只有明确类型时才可以使用类型断言。

总结

本节课系统介绍了 ArkTS 的基础语法:

  1. ArkTS 语言定位:基于 TypeScript 扩展,新增静态类型检查和自动类型推断,兼容 TS/JS 生态。

  2. 变量与常量声明:使用let声明变量(可修改),使用const声明常量(不可修改)。常量推荐全大写 + 下划线命名。

  3. 数据类型体系:分为基本类型(stringnumberboolean)和引用类型(ObjectArrayEnum等)。基本类型为值复制,引用类型为地址复制。

  4. 拓展特性:包括枚举类型、联合类型、类型别名、类型安全、自动类型推导和类型断言。