首页 > 编程笔记 > 通用技能 阅读:3

ArkTS常见数据类型汇总(新手必看)

由于 ArkTS 是一种静态类型语言,所有数据的类型都必须在编译时确定。

但是,如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。ArkTS 会自动推断类型。

以下示例中,两条声明语句都是有效的,两个变量都是string类型:
// 自动类型推断
let hi1: string = 'hello';
let hi2 = 'hello, world';

ArkTS Number类型

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

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

整数字面量包括以下类别:
浮点数字面量包括以下类别:
以下是 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;

相关文章