ArkTS常见数据类型汇总(新手必看)
由于 ArkTS 是一种静态类型语言,所有数据的类型都必须在编译时确定。
但是,如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。ArkTS 会自动推断类型。
以下示例中,两条声明语句都是有效的,两个变量都是string类型:
数字字面量包括整数字面量和十进制浮点数字面量。
整数字面量包括以下类别:
浮点数字面量包括以下类别:
以下是 Number 类型常用示例:
通常在条件语句中使用 boolean 类型的变量:
字符串字面量由单引号(')或双引号(")之间括起来的零个或多个字符组成。字符串字面量还有一特殊形式,是用反向单引号(`)括起来的模板字面量。
以下是常用示例:
数组可由数组复合字面量(即用方括号括起来的零个或多个表达式的列表,其中每个表达式为数组中的一个元素)来赋值。数组的长度由数组中元素的个数来确定。数组中第一个元素的索引为 0。
以下示例将创建包含三个元素的数组:
常量表达式可以用于设置枚举常量的值:
可以用不同的机制获取联合类型中特定类型的值。示例如下:
但是,如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。ArkTS 会自动推断类型。
以下示例中,两条声明语句都是有效的,两个变量都是string类型:
// 自动类型推断 let hi1: string = 'hello'; let hi2 = 'hello, world';
ArkTS Number类型
ArkTS 提供 number 和 Number 类型,任何整数和浮点数都可以被赋给此类型的变量。数字字面量包括整数字面量和十进制浮点数字面量。
整数字面量包括以下类别:
- 由数字序列组成的十进制整数。例如:0、117、−345;
- 以 0x(或 0X)开头的十六进制整数,可以包含数字(0~9)和字母 a~f 或 A~F。例如:0x1123、0x00111、−0xF1A7;
- 以 0o(或 0O)开头的八进制整数,只能包含数字(0~7)。例如:0o777;
- 以 0b(或 0B)开头的二进制整数,只能包含数字 0 和 1。例如:0b11、0b0011、−0b11。
浮点数字面量包括以下类别:
- 十进制整数,为有符号数(即前缀为“+”或“−”);
- 小数点(“.”);
- 小数部分(由十进制数字字符串表示);
- 以“e”或“E”开头的指数部分,后跟有符号(即前缀为“+”或“−”)或无符号整数。
以下是 Number 类型常用示例:
let n1 = 3.14; let n2 = 3.141592; let n3 = .5; let n4 = 1e2; function factorial(n: number): number { if (n <= 1) return 1; return n * factorial(n - 1); } factorial(n1) // 7.660344000000002 factorial(n2) // 7.680640444893748 factorial(n3) // 1 factorial(n4) // 9.33262154439441e+157
ArkTS boolean类型
boolean 类型由 true 和 false 两个逻辑值组成。通常在条件语句中使用 boolean 类型的变量:
let isDone: boolean = false; // ... if (isDone) { console.log('Done!'); }
ArkTS string类型
string 类型代表字符序列;可以使用转义字符来表示字符。字符串字面量由单引号(')或双引号(")之间括起来的零个或多个字符组成。字符串字面量还有一特殊形式,是用反向单引号(`)括起来的模板字面量。
以下是常用示例:
let s1 = 'Hello, world!\n'; let s2 = 'this is a string'; let s3 = `The result is ${a}`;
ArkTS void类型
void 类型用于指定函数没有返回值。此类型只有一个值,同样是 void。由于 void 是引用类型,因此它可以用于泛型类型参数。class Class<T> { // ... } let instance: Class<void>;
ArkTS object类型
object 类型是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给 object 类型的变量。ArkTS array类型
array 即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象。数组可由数组复合字面量(即用方括号括起来的零个或多个表达式的列表,其中每个表达式为数组中的一个元素)来赋值。数组的长度由数组中元素的个数来确定。数组中第一个元素的索引为 0。
以下示例将创建包含三个元素的数组:
let names: string[] = ['鸿蒙', 'C语言中文网', 'https://c.biancheng.net/'];
ArkTS enum类型
enum 类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。使用枚举常量时必须以枚举类型名称为前缀。enum ColorSet { Red, Green, Blue } let c: ColorSet = ColorSet.Red;
常量表达式可以用于设置枚举常量的值:
enum ColorSet { White = 0xFF, Grey = 0x7F, Black = 0x00 } let c: ColorSet = ColorSet.Black;
ArkTS union类型
union 类型(即联合类型)是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。class Cat { /* ... */ } class Dog { /* ... */ } class Frog { /* ... */ } type Animal = Cat | Dog | Frog | number; // Cat、Dog、Frog 是一些类型(类或接口) let animal: Animal = new Cat(); animal = new Frog(); animal = 42; // 可以将类型为联合类型的变量赋值为任何组成类型的有效值
可以用不同的机制获取联合类型中特定类型的值。示例如下:
class Cat { sleep() {} meow() {} } class Dog { sleep() {} bark() {} } class Frog { sleep() {} leap() {} } type Animal = Cat | Dog | Frog; function foo(animal: Animal) { if (animal instanceof Frog) { animal.leap(); // animal 在这里是 Frog 类型 } animal.sleep(); // animal 具有 sleep 方法 }
ArkTS aliases类型
aliases 类型为匿名类型(数组、函数、对象字面量或联合类型)提供名称,或为已有类型提供替代名称。type Matrix = number[][]; type Handler = (s: string, no: number) => string; type Predicate<T> = (x: T) => boolean; type NullableObject = object | null;