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类型
四、命名规则
- 只能包含数字、字母、下划线(_)、美元符号($) ,且不能以数字开头。
- 不能使用ArkTS的内置关键字/保留字(如let、const、function、if等)
- 严格区分大小写 (如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-else、if-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. 循环控制语句
用于控制循环的执行流程,包括break和continue。
break:终止当前循环或switch语句,带标识符时可跳出指定语句块。continue:停止当前循环迭代,直接进入下一次迭代。
6. 异常处理语句
用于捕获和处理代码运行中的异常,包含throw、try/catch、finally。
TypeScript
throw new Error('this error'); // 抛出异常
// 捕获并处理异常
try {
// 可能发生异常的代码块
} catch (e) {
// 异常处理逻辑
} finally {
// 无论是否发生异常,都会执行的代码
}
关键说明 :finally语句可选,适用于释放资源等必执行操作。