ArkTS基础语法 | (1)基本知识

ArkTS基础语法 | (1)基本知识

在学习HarmonyOS开发的核心语言ArkTS时,整理了一份基础语法笔记,方便日后回顾。

一、日志打印

ArkTS中最常用的调试方式为日志打印,使用console.log方法即可实现,多个打印字段直接用逗号分隔。

TypeScript 复制代码
console.log('打印日志', '字段1', '字段2');

二、数据类型

ArkTS是强类型语言,变量声明时需要显式指定类型,核心基础类型如下,涵盖基本类型、引用类型、复合类型等。

1. 字符串类型(string)
  • 代表字符序列,可使用转义字符表示特殊字符。
  • 内容必须用单引号或双引号包裹
TypeScript 复制代码
let name: string = 'ArkTS学习';   // 示例
2. 数字类型(number)
  • 无需区分整数和浮点数,可统一表示整数、小数。
TypeScript 复制代码
let age: number = 25;
let price: number = 99.9;
3. 布尔类型(boolean)
  • 仅包含true(真)和false(假)两个逻辑值
TypeScript 复制代码
let isFinish: boolean = true;
4. void 类型
  • 用于指定函数没有返回值
  • 属于引用类型,可用于泛型类型参数。
5. Object / object 类型
  • Object:所有引用类型的基类型,任何值(包括基本类型)都可赋值给它,基本类型值会被自动装箱。
  • object:表示除基本类型外的所有类型。
TypeScript 复制代码
let o1: Object = 'Alice';
let o2: Object = ['a', 'b'];
let o3: Object = 1;
let o4: object = [1, 2, 3];
6. 数组类型(array)
  • 用于存储多个同类型数据,声明的类型需与存储数据类型一致,否则报错。
  • 声明格式:let 数组名: 类型[] = [数据1, 数据2, ...]
  • 数组索引从0开始,通过数组名[索引]取值。
TypeScript 复制代码
let names: string[] = ['小鸣', '小何', '小杨'];
let scores: number[] = [90, 85, 95];

console.log(names[0]);   // 取值 输出:小鸣
7. 联合类型(Union)

让变量的类型或取值更灵活,分为多类型联合多值联合两种。

多类型联合:变量可存储联合类型中的任意一种类型数据

TypeScript 复制代码
let 变量名: 类型1 | 类型2 | 类型3 = 值;   // 格式

// 示例
let data: string | number | boolean;
data = '字符串';   // 合法
data = 123;       // 合法
data = true;      // 合法
data = [];        // 不合法:不在联合类型范围内

多值联合:约束变量只能取指定的几个值(类似简单的取值枚举)

TypeScript 复制代码
let 变量名: 值1 | 值2 | 值3 = 值;   // 格式

// 示例
let status: '成功' | '失败' | '处理中';
status = '成功';   // 合法
status = '异常';   // 不合法:不在指定值范围内
8. 枚举类型(enum)
  • 有描述性的常量列表,约束变量只能在指定范围内取值。
  • 复杂场景下,可读性和可维护性远高于联合类型。
TypeScript 复制代码
// 声明枚举
enum 枚举名 {
   常量1 = 值,
   常量2 = 值,
   ......
}

let 变量名 : 枚举名 = 枚举名.常量名;   // 使用枚举类型约束变量
9. Aliases类型

为匿名类型(如数组、函数、对象字面量、联合类型)提供名称,或为已定义的类型提供替代名称,提升代码可读性。

三、变量与常量

ArkTS中通过let声明变量、const声明常量,二者均需遵循强类型规则,存储内容需与声明类型一致。

1. 变量(可变数据)
  • 关键字:let
  • 格式:let 变量名: 类型 = 值
  • 声明后可修改其值,类型始终保持一致。
TypeScript 复制代码
let title: string = 'ArkTS语言';
let num: number = 2.7;
title = '学习ArkUI';   // 合法 修改变量值
2. 常量(不可变数据)
  • 关键字:const
  • 格式:const 常量名: 类型 = 值
  • 声明时必须赋值,赋值后无法修改,修改会直接报错。
  • 适用场景:存储固定不变的值(如圆周率、固定配置)
TypeScript 复制代码
const PI: number = 3.1415926;   // 声明常量
3. 自动类型推断
  • 如果变量/常量声明时包含初始值,开发者无需显式指定类型,编译器会自动推断。
TypeScript 复制代码
let title = 'ArkTS基础语法';   // 自动推断为string类型
const PI = 3.14;   // 自动推断为number类型

四、命名规则

  1. 只能包含数字、字母、下划线(_)、美元符号($) ,且不能以数字开头
  2. 不能使用ArkTS的内置关键字/保留字(如let、const、function、if等)
  3. 严格区分大小写 (如userName和Username是两个不同的名称)

五、运算符

ArkTS支持多种运算符,按功能可分为赋值运算符、比较运算符、算术运算符、位运算符、逻辑运算符、instanceof运算符等。

1. 赋值运算符
  • 基础赋值:=
  • 复合赋值:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=(如a += b 等价于 a = a + b
2. 比较运算符

用于判断两个操作数的关系,返回布尔值。

运算符 说明
=== 严格相等:值和类型都相等时返回true
!== 严格不相等:值或类型不同时返回true
== 相等:仅比较值,会自动类型转换。
!= 不相等:仅比较值,会自动类型转换。
左操作数大于右操作数返回true
>= 左操作数大于等于右操作数返回true
< 左操作数小于右操作数返回true
<= 左操作数小于等于右操作数返回true
3. 算术运算符
  • 一元运算符:-、+、--、++
  • 二元运算符:+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)
4. 位运算符

对操作数的二进制位进行运算,适用于底层开发场景。

运算符 说明
a & b 按位与:对应位都为1则为1,否则为0。
a ^ b 按位异或:对应位不同则为1,否则为0。
~ a 按位非:反转操作数的所有位
a << b 左移:a的二进制向左移b位
a >> b 算术右移:a的二进制向右移b位,带符号扩展。
a >>> b 逻辑右移:a的二进制向右移b位,左边补0。
5. 逻辑运算符

用于逻辑判断,返回布尔值。

| 运算符 | 说明 |
|----------|-------------------------------|---|-----------------------|
| a && b | 逻辑与:两边都为true则为true |
| a | | b | 逻辑或:两边至少一个为true则为true |
| ! a | 逻辑非:取反,true变false,false变true。 |

6. instanceof 运算符
  • 运行时检查一个对象是否是指定类或其子类的实例
  • 格式:obj instanceof className
  • 返回布尔值,是实例则返回true,否则返回false。

六、流程控制语句

1. if 语句

根据逻辑条件执行不同代码块,支持if-elseif-else if-else嵌套。

TypeScript 复制代码
if (condition1) {
  // 条件1为true时执行
} else if (condition2) {
  // 条件1为false、条件2为true时执行
} else {
  // 所有条件都为false时执行
}
2. switch 语句

执行与表达式值匹配的代码块,适用于多值判断场景。

TypeScript 复制代码
switch (expression) {
  case label1:
    // label1匹配时执行
    break;   // 跳出switch(可选)
  case label2:
  case label3:
    // label2/label3匹配时执行
    break;
  default:
    // 无匹配label时执行
}

关键说明break语句可选,无break时会执行下一个label的代码块。

3. 条件表达式(三元运算符)

简洁的条件判断,根据布尔值返回两个表达式之一的结果。

TypeScript 复制代码
// 格式:条件 ? 条件为true的结果 : 条件为false的结果
condition ? expression1 : expression2;
4. 循环语句

ArkTS支持多种循环语句,适用于不同的遍历/重复执行场景。

(1)for 语句

可自定义初始化、循环条件、更新操作。

TypeScript 复制代码
for ([init]; [condition]; [update]) {
  // 循环体
}

执行流程:初始化→判断条件→执行循环体→更新操作→再次判断条件(直至条件为false)

(2)for-of 语句

遍历可迭代类型(数组、Set、Map、字符串等),简洁高效。

TypeScript 复制代码
for (forVar of IterableExpression) {
  // 处理遍历的每一个值forVar
}
(3)while 语句

先判断条件,再执行循环体,条件为true时持续执行。

TypeScript 复制代码
while (condition) {
  // 循环体
}
(4)do-while 语句

先执行一次循环体,再判断条件,至少执行一次

TypeScript 复制代码
do {
  // 循环体
} while (condition)
5. 循环控制语句

用于控制循环的执行流程,包括breakcontinue

  • break:终止当前循环或switch语句,带标识符时可跳出指定语句块。
  • continue:停止当前循环迭代,直接进入下一次迭代。
6. 异常处理语句

用于捕获和处理代码运行中的异常,包含throwtry/catchfinally

TypeScript 复制代码
throw new Error('this error');   // 抛出异常

// 捕获并处理异常
try {
  // 可能发生异常的代码块
} catch (e) {
  // 异常处理逻辑
} finally {
  // 无论是否发生异常,都会执行的代码
}

关键说明finally语句可选,适用于释放资源等必执行操作。

相关推荐
全栈探索者1 天前
列表渲染不用 map,用 ForEach!—— React 开发者的鸿蒙入门指南(第 4 期)
react.js·harmonyos·arkts·foreach·列表渲染
ITUnicorn2 天前
【HarmonyOS6】ArkTS 自定义组件封装实战:动画水杯组件
华为·harmonyos·arkts·鸿蒙·harmonyos6
全栈探索者2 天前
@Component + struct = 你的新函数组件——React 开发者的鸿蒙入门指南(第 2 期)
react·harmonyos·arkts·前端开发·deveco studio·鸿蒙next·函数组件
我讲个笑话你可别哭啊3 天前
鸿蒙ArkTS快速入门
前端·ts·arkts·鸿蒙·方舟开发框架
We....4 天前
鸿蒙与Java跨平台Socket通信实战
java·服务器·tcp/ip·arkts·鸿蒙
浩宇软件开发4 天前
基于OpenHarmony鸿蒙开发诗中华词鉴赏APP
harmonyos·arkts·arkui
马剑威(威哥爱编程)4 天前
鸿蒙开发实战:玩转“智感握姿”——新闻列表左右手智能切换
华为·harmonyos·arkts·arkui·鸿蒙6
ITUnicorn4 天前
【HarmonyOS6】从零实现随机数生成器
华为·harmonyos·arkts·鸿蒙·harmonyos6
ITUnicorn7 天前
【HarmonyOS6】从零实现自定义计时器:掌握TextTimer组件与计时控制
华为·harmonyos·arkts·鸿蒙·harmonyos6