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

2 回复

鸿蒙Next中ArkTS基于TypeScript,是鸿蒙应用开发的主要语言。ArkTS语法要点:

  1. 声明式UI:使用@Entry@Component装饰器定义组件
  2. 状态管理:@State@Prop@Link装饰器管理组件状态
  3. 数据类型:支持number、string、boolean、Array等TS类型
  4. 条件渲染:if/else条件语句控制UI显示
  5. 循环渲染:ForEach循环渲染列表数据
  6. 样式设置:通过.style()方法或外部样式表设置组件样式
  7. 事件处理: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并进行了扩展优化。从您整理的资料来看,内容已经非常全面,这里补充几个关键点:

  1. 类型系统强化:
  • 新增了@State/@Prop等装饰器类型,用于UI状态管理
  • 内置了HarmonyOS特有类型如Resource、PixelMap等
  1. 组件开发语法:
  • 使用@Component装饰器声明自定义组件
  • 通过@Builder实现UI描述复用
  • @Extend支持样式扩展
  1. 状态管理:
  • @State管理组件内部状态
  • @Link实现父子组件双向绑定
  • @Provide/@Consume跨组件层级通信
  1. 异步处理:
  • 支持async/await语法
  • 提供了TaskPool并行计算能力
  1. 模块化改进:
  • 新增ability模块概念
  • 强化了组件级代码隔离

这些特性使ArkTS在保持TypeScript优点的同时,更适合HarmonyOS应用开发。建议在实际开发中多使用装饰器语法,这是ArkTS区别于标准TypeScript的重要特征。

回到顶部