【中工开发者】鸿蒙知识讲解之ArkTS语言介绍

简介:ArkTS 是 HarmonyOS 优选的主力应用开发语言。它在 TypeScript 的基础上,匹配 ArkUI 框架,扩展了声明式 UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨设备应用。ArkTS 继承了 TypeScript 的所有特性,是 TypeScript 的超集。在使用 TaskPool 时,执行的并发函数需要使用特定装饰器修饰,否则无法通过相关校验。从 API version 9 开始,该装饰器支持在 ArkTS 卡片中使用。在 HarmonyOS 5.0 中,ArkTS 还提供了对相机元数据的访问能力。

本节将指导开发者了解ArkTS的核心功能、语法和最佳实践,使开发者能够使用ArkTS高效构建高性能的移动应用。

一.基础知识

1.声明:ArkTS通过声明引入变量、常量、函数和类型。

(1)变量声明:以关键字let开头的声明引入变量,该变量在程序执行期间可以具有不同的值。

(2)常量声明:以关键字const开头的声明引入只读常量,该常量只能被赋值一次。注意对常量重新赋值会造成编译时错误。

2.类型

(1)Number类型:ArkTS提供number和Number类型,任何整数和浮点数都可以被赋给此类型的变量。

数字字面量包括整数字面量和十进制浮点数字面量。

(2)Boolean型:由true和false两个逻辑值组成。

(3)String类型:代表字符序列;可以使用转义字符来表示字符。

(4)Void类型:用于指定函数没有返回值。

(5)Object类型:是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给Object类型的变量。object类型则用于表示除非基本类型外的类型。

(6)Array类型:array即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象。

(7)Enum类型:enum类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。

(8)Union类型:union类型,即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。

(9)Aliases类型:Aliases类型为匿名类型(数组、函数、对象字面量或联合类型)提供名称,或为已有类型提供替代名称。

3.运算符:具体包括赋值运算符,比较运算符,算术运算符,位运算符,逻辑运算符,

4.语句 (语句有很多,以下仅列举一部分)
(1)If 语句:用于根据条件执行不同的代码块。
(2)Switch 语句:根据表达式的值选择执行不同的 case 语句块。
(3)条件表达式:根据条件选择执行不同的表达式。
(4)For 语句:用于循环执行代码块。
(5)For-of 语句:用于遍历可迭代对象的元素。

(6)While语句:只要condition为真值(转换后为true的值),while语句就会执行statements语句

(7)Do-while语句:如果condition的值为真值(转换后为true的值),那么statements语句会重复执行

二.函数

1.函数声明引入一个函数,包含其名称、参数列表、返回类型和函数体。

例如:

在函数声明中,必须为每个参数标记类型。如果参数为可选参数,那么允许在调用函数时省略该参数。函数的最后一个参数可以是 rest 参数。

2.可选参数

ArkTS 支持可选参数,其格式为name?: Type。在函数调用时,如果没有传递该参数,则其值为undefined。以下是一个示例:



在上述示例中,message参数是可选的。如果在调用printMessage函数时没有传递message参数,则会输出Hello

3.Rest参数

ArkTS 语言中,函数的最后一个参数可以是 rest 参数。rest 参数允许函数或方法接受任意数量的实参。使用 rest 参数时,可以通过`...`语法来定义,例如:`function sum(...numbers: number[]): number { }`,在这个示例中,`numbers`就是 rest 参数,它可以接受任意数量的`number`类型的实参。

4.返回类型

ArkTS 语言中的函数可以指定返回类型,例如:

在上述示例中,`sayHello`函数的返回类型为`void`,表示该函数没有返回值。

5.函数作用域

在 ArkTS 语言中,函数作用域指的是函数内部定义的变量和其他实例的可见范围。

函数中定义的变量和其他实例仅可以在函数内部访问,不能从外部访问。如果函数中定义的变量与外部作用域中已有实例同名,则函数内的局部变量定义将覆盖外部定义。

6.函数调用

在 ArkTS 语言中,函数调用是通过函数名和相应的参数来实现的。例如,如果有一个函数 `function add(a: number, b: number): number { return a + b; }` ,那么可以通过 `add(2, 3)` 这样的方式来调用该函数,并将返回值用于后续的操作。 

7.函数类型
(1)普通函数:使用`function`关键字定义的函数。
(2)箭头函数:也称为 Lambda 函数,使用箭头`=>`定义的函数。
(3)匿名函数:没有函数名的函数,可以作为变量赋值或直接调用。

8.函数重载

在 ArkTS 语言中,函数重载是指可以定义多个同名函数,但这些函数的参数类型或参数个数不同。这样,在调用函数时,编译器会根据传入的参数类型和个数来选择合适的函数进行调用。例如,可以定义两个名为`calculate`的函数,一个接受两个整数作为参数,另一个接受两个浮点数作为参数:

在实际使用时,根据传入的参数类型,编译器会自动选择对应的函数进行调用。需要注意的是,ArkTS 语言的函数重载是基于类型的,而不是基于返回值的。 

三.类

1.字段

类的字段用于定义类的属性。字段可以是各种数据类型,例如字符串、数字、布尔值等。

2.方法

方法属于类。类可以定义实例方法或者静态方法。静态方法属于类本身,只能访问静态字段。而实例方法既可以访问静态字段,也可以访问实例字段,包括类的私有字段。

3.继承:一个类可以继承另一个类(称为基类)

4.构造函数:类声明可以包含用于初始化对象状态的构造函数。

5.可见修饰符:

类的可见修饰符有 publicprivate 和 protected

  • public:公共的,默认的修饰符。在类的内部和外部都可以访问。
  • private:私有的,只能在类的内部访问,类的外部无法访问。
  • protected:受保护的,只能在类的内部及子类中访问,类的外部无法访问。

6对象字面量:对象字面量是一种创建对象的简洁方式。通过使用花括号 {} 并在其中指定属性和值来创建对象。

例如:

7.抽象类

在 ArkTS 语言中,抽象类是一种不能被直接实例化的类,它用于为其他类提供一个通用的定义和一些必须实现的方法。抽象类使用 `abstract` 关键字来定义。

以下是一个 ArkTS 语言中抽象类的示例:

在上述示例中,`Animal` 是一个抽象类,它包含一个抽象方法 `makeSound()` 和一个普通方法 `move()` 。抽象方法没有具体的实现,子类必须实现这个方法。`Dog` 类继承自 `Animal` 类,并实现了 `makeSound()` 方法。 

四.接口(仅介绍一部分)

1.接口属性

在 ArkTS语言中,接口用于定义对象的类型。接口中的属性可以用来描述对象应该具有的属性及其类型。

以下是一个ArkTS语言中接口属性的示例:

在上述示例中,我们定义了一个名为`PersonInterface`的接口,该接口包含两个属性:`name`(字符串类型)和`age`(数字类型)。然后,我们创建了一个名为`person`的变量,并将其类型指定为`PersonInterface`,同时为其赋予了相应的属性值。 

2.接口继承

在 ArkTS 语言中,接口可以继承其他接口。通过接口继承,可以在一个接口中包含另一个接口的所有属性和方法,并且可以添加新的属性和方法。

3.抽象类和接口

在 ArkTS 语言中,抽象类和接口都是用来定义类型和规范行为的重要概念,但它们有一些区别:

抽象类(Abstract Class):
- 抽象类可以包含属性和方法的实现,也可以包含抽象方法(没有具体实现的方法)。
- 抽象类不能被直接实例化,只能作为其他类的基类,子类必须实现抽象类中的抽象方法。
- 抽象类可以包含构造函数,用于初始化子类的一些属性。

接口(Interface):
- 接口只能包含抽象方法和属性的声明,不能有具体的实现。
- 接口中的所有成员都是公共的,不能有访问修饰符。
- 一个类可以实现多个接口,实现接口的类必须实现接口中定义的所有方法。

五.简介知识

1.泛型类型和函数

在 ArkTS 语言中,泛型可以使代码更加灵活和可复用。泛型类型和函数允许在定义时不指定具体的类型,而是在使用时根据实际需求来确定类型。

泛型函数的定义方式如下:

在这个示例中,`` 是泛型类型参数,表示函数可以接受任何类型的参数 `arg`,并返回相同类型的值。

对于泛型类型,例如定义一个泛型类:

在这个类中,`T` 是泛型类型参数,`value` 属性的类型是 `T`,构造函数的参数类型也是 `T`。

通过使用泛型,可以提高代码的灵活性和可维护性,避免了为每种可能的类型都编写单独的函数或类。 

2.空安全

在 ArkTS 语言中,空安全(Null Safety)是一项重要的特性,用于防止空指针异常(Null Pointer Exception)。通过空安全机制,编译器可以在编译时检测到可能出现的空值访问,并提示开发者进行处理,从而提高代码的健壮性和可靠性。

3.模块

在 ArkTS 语言中,模块用于将代码组织成独立的、可复用的单元。模块可以包含类、函数、变量等定义,并可以控制这些定义的可见性。

通过将相关的功能封装到模块中,可以提高代码的可维护性和可复用性,同时避免命名冲突。模块可以通过导入和导出机制在不同的文件中进行共享和使用。

4.关键字

ArkTS语言中的一些关键字包括:
- `class`:用于定义类。
- `interface`:用于定义接口。
- `abstract`:用于定义抽象类或抽象方法。
- `extends`:用于类的继承。
- `implements`:用于类实现接口。
- `public`、`private`、`protected`:用于控制类成员的访问权限。
- `function`:用于定义函数。
- `const`:用于定义常量。
- `let`:用于定义变量。
- `if`、`else`、`switch`、`case`:用于条件判断。
- `for`、`while`、`do...while`:用于循环。
- `break`、`continue`:用于控制循环流程。
- `try`、`catch`、`finally`:用于异常处理。
- `return`:用于函数返回值。
- `typeof`:用于获取变量的类型。
- `new`:用于创建对象实例。

这只是ArkTS语言中的一部分关键字,具体的使用方式和含义会根据语言的语法和特性来确定。 

注:以上可能有错,请选择性参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值