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;
ICP备案:
公安联网备案: