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语句可选,适用于释放资源等必执行操作。

相关推荐
UnicornDev1 天前
【HarmonyOS 6】底部悬浮导航的沉浸光感适配(API23)
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
UnicornDev6 天前
【HarmonyOS 6】设置页面 UI 设计
ui·华为·harmonyos·arkts·鸿蒙
UnicornDev9 天前
【HarmonyOS 6】基于API23的底部悬浮导航
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
积水成渊,蛟龙生焉10 天前
鸿蒙手势处理篇(滑动冲突、基础手势、组合手势)
华为·arkts·鸿蒙·滑动冲突·手势冲突·基础手势·组合手势
纯爱掌门人10 天前
聊聊 HarmonyOS 上的应用内通知授权弹窗
前端·harmonyos·arkts
UnicornDev12 天前
【HarmonyOS 6】练习记录页面 UI 设计
ui·华为·harmonyos·arkts·鸿蒙
哈__13 天前
新手入门harmonyOS开发:手把手教你用ArkTS实现一个天气应用
harmonyos·arkts
积水成渊,蛟龙生焉13 天前
鸿蒙装饰器V2详解
华为·harmonyos·arkts·鸿蒙·ark
积水成渊,蛟龙生焉15 天前
鸿蒙通用事件(事件分发、事件拦截等)
华为·arkts·鸿蒙·事件分发·通用事件·事件拦截
Huanzhi_Lin18 天前
鸿蒙NEXT-HelloWorld
华为·harmonyos·arkts·arkui·ets