HarmonyOS 鸿蒙Next中ArkTS基础语法
HarmonyOS 鸿蒙Next中ArkTS基础语法
ArkTS基础语法
ArkTS基于TypeScriot,而TypeScript基于JavaScript
一.声明:
let声明变量,const声明常量
二.类型:
基本类型,引用类型(还有枚举类型,联合类型和类型别名)
2.1 基本类型
(存储和访问时是直接的):string,number,boolean,null,undefined,bigint
let s3 = `The result is ${a}`;
2.1.2 number包括了整型和浮点型,表示过大的整数时会造成精度丢失,可以用bigint确保精度
2.2 引用类型
在内存中通过指针访问数据 interface,Object,Function,Array,Class,Tuple,Enum,void
2.2.1 Object:Object类型是所有引用类型的基类型。任何值,包括基本类型的值,都可以直接被赋给Object类型的变量(基本类型值会被自动装箱)。Object类型用于表示除基本类型外的类型。
2.2.2 Array:
let names: string[] = ['Alice', 'Bob', 'Carol'];
2.3 其他类型
enum:枚举类型
通常在其中设置常量
enum ColorSet { Red, Green, Blue }
let c: ColorSet = ColorSet.Red;
Union:联合类型
class Cat { name: string = 'cat';}
class Dog {name: string = 'dog';}
class Frog { name: string = 'frog';}
type Animal = Cat | Dog | Frog | number | string | null | undefined;
let animal: Animal = new Cat();
animal = new Frog();
animal = 42;
2.4 日志打印:console.log();直接放字符串变量或者模板字面量
2.5 ===与==的区别:
三.空安全机制
3.1 if判断
3.2 空值合并表达式,
let name:string|null=null;
const res=name ??' ' ;
3.3 使用?可选链
let name:string|null='aa';
let len=name?.length;
四.语句
4.1 For-of语句
使用for-of语句可遍历数组、Set、Map、字符串等可迭代的类型。
for (let ch of 'a string object') {
console.info(ch);
}
4.2 break:跳出整个循环
continue:跳出当前循环
五.函数的声明和使用
5.1 参数
必须参数,可选参数,默认参数,Rest参数
可选参数:name?: string
默认参数:如果省略这个参数就会使用默认值,也可以赋为其他值
rest参数:rest参数允许函数接收一个由剩余实参组成的数组,类型为任意指定类型,用于处理不定数量的参数输入。
function sum(...numbers: number[]): number {
let res = 0;
for (let n of numbers) res += n;
return res;
}
sum(); // 返回0
sum(1, 2, 3); // 返回6
5.2 箭头函数
(lambda表达式):返回类型可以省略用=>指向函数体
5.3 闭包函数
作用:
- 封装私有变量:闭包可以用来封装私有变量,使其不会被外部直接访问,从而实现数据的封装和隐藏。
- 创建工厂函数:闭包可以用来创建工厂函数,每次调用工厂函数时都会返回一个新的闭包,每个闭包都有自己的独立状态。避免了全局变量的污染
- 回调函数和事件处理:闭包常用于回调函数和事件处理中,可以捕获事件发生时的状态。
六.类的声明和使用
6.1 类的创建和构造器.
ArkTS要求所有字段在声明时或者构造函数中显式初始化
6.2 在类中定义方法:public 方法名
6.3 封装,继承,多态
- 封装:和java差不多
- 继承:子类extends父类,需要在构造器中添加super
- 多态:子类继承父类,并可以重写父类方法,使得不同示例对象对同一行为有不同表现
七.接口
7.1 声明
可以添加可选属性(?),如果接口只有属性,则可以通过字面量的形式创建接口实例间接使用接口,接口不能直接创建实例
7.2 拓展
接口B可以extends接口A,给接口A进行拓展
八.命名空间 namespace
8.1 概念
一种将代码组织为不同区域的方式,用来更好的控制命名冲突和组织代码
九.模块的导入和导出
程序可划分为多组编译单元或模块。每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。与此相对,从另一个模块导出的变量、函数、类、接口等必须首先导入到模块中。
9.1 导入与导出
9.1.1 导出export
在变量,函数或者类前面加上export,或者export{}from‘./Util’
export * from ‘./Util’
9.1.2 导入import
静态导入:
import * as Utils from './utils';
Utils.X // 表示来自Utils的X
Utils.Y // 表示来自Utils的Y
import * as Utils from './utils';
Utils.X // 表示来自Utils的X
Utils.Y // 表示来自Utils的Y
import { X as Z, Y } from './utils';
Z // 表示来自Utils的X
Y // 表示来自Utils的Y
X // 编译时错误:'X'不可见
动态导入:动态导入允许在需要时才加载模块,而不是在应用启动时一次性加载所有模块。这可以显著减少初始加载时间,提高应用性能,尤其是在大型应用中。
// Calc.ts
export function add(a:number, b:number):number {
let c = a + b;
console.info('Dynamic import, %d + %d = %d', a, b, c);
return c;
}
// Index.ts
import("./Calc").then((obj: ESObject) => {
console.info(obj.add(3, 5));
}).catch((err: Error) => {
console.error("Module dynamic import error: ", err);
});
对象字面量
是一种直接定义对象的方式,它允许你以一种简洁的语法创建一个对象并初始化其属性和方法。
let person = {
name: "Alice", // 属性
age: 30, // 属性
greet: function() { // 方法
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
};
person.greet(); // 输出: Hello, my name is Alice and I am 30 years old
属性方法
(Property Methods)通常指的是对象字面量中定义的方法。
更多关于HarmonyOS 鸿蒙Next中ArkTS基础语法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next中ArkTS基于TypeScript,是鸿蒙应用开发的主要语言。ArkTS语法要点:
- 声明式UI:使用@Entry、@Component装饰器定义组件
- 状态管理:@State、@Prop、@Link装饰器管理组件状态
- 数据类型:支持number、string、boolean、Array等TS类型
- 条件渲染:if/else条件语句控制UI显示
- 循环渲染:ForEach循环渲染列表数据
- 样式设置:通过.style()方法或外部样式表设置组件样式
- 事件处理:onClick等事件绑定处理方法
示例组件代码:
[@Entry](/user/Entry)
[@Component](/user/Component)
struct MyComponent {
[@State](/user/State) count: number = 0
build() {
Column() {
Text(`Count: ${this.count}`)
Button('Click')
.onClick(() => { this.count++ })
}
}
}
更多关于HarmonyOS 鸿蒙Next中ArkTS基础语法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
ArkTS作为HarmonyOS Next的主要开发语言,其语法确实基于TypeScript并进行了扩展优化。从您整理的资料来看,内容已经非常全面,这里补充几个关键点:
- 类型系统强化:
- 新增了
@State
/@Prop
等装饰器类型,用于UI状态管理 - 内置了HarmonyOS特有类型如Resource、PixelMap等
- 组件开发语法:
- 使用
@Component
装饰器声明自定义组件 - 通过
@Builder
实现UI描述复用 @Extend
支持样式扩展
- 状态管理:
@State
管理组件内部状态@Link
实现父子组件双向绑定@Provide
/@Consume
跨组件层级通信
- 异步处理:
- 支持
async/await
语法 - 提供了TaskPool并行计算能力
- 模块化改进:
- 新增ability模块概念
- 强化了组件级代码隔离
这些特性使ArkTS在保持TypeScript优点的同时,更适合HarmonyOS应用开发。建议在实际开发中多使用装饰器语法,这是ArkTS区别于标准TypeScript的重要特征。