跳到主要内容

ArkTS语法基础

ArkTS语言介绍,这块还得看官方文档,下面是需要注意的一些内容

arkTS基础语法

  • number类型在表示大整数(即超过-9007199254740991~9007199254740991)时会造成精度丢失。在开发时可以按需使用BigInt类型来确保精度

    let bigInt: BigInt = BigInt('999999999999999999999999999999999999999999999999999999999999');

  • Union类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。

    type Animal = Cat | Dog | Frog | number | string | null | undefined;
    // Cat、Dog、Frog是一些类型(类或接口)
    let animal: Animal = new Cat();

    // 获取联合类型中的特定类型值
    function foo(animal: Animal) {
    if (animal instanceof Frog) { // 判断animal是否是Frog类型
    animal.leap(); // animal在这里是Frog类型
    }
    animal.sleep(); // Animal具有sleep方法
    }
  • Rest参数:函数的最后一个参数可以是rest参数,格式为...restArgs。rest参数允许函数接收一个由剩余实参组成的数组,类型为任意指定类型,用于处理不定数量的参数输入。

    function sum(...numbers: number[]): number {
    let res = 0;
    for (let n of numbers)
    res += n;
    return res;
    }
  • 类可以使用对象字面量创建实例

    class Point {
    x: number = 0; // 实例字段
    y: number = 0;
    static z:number = 0; // 静态字段
    }
    // 对象字面量是一个表达式,可用于创建类实例并提供一些初始值。
    let p: Point = {x: 42, y: 42}; // 对象字面量
  • 类中的getter和setter

    class Person {
    private _age: number = 0;
    get age(): number { return this._age; }
    set age(x: number) {
    if (x < 0) {
    throw Error('Invalid age argument');
    }
    this._age = x;
    }
    }

    let p = new Person();
    p.age; // 输出0
    p.age = -42; // 设置无效age值会抛出错误
  • 泛型默认值(泛型类型的类型参数可以设置默认值)

    function foo<T = number>(): void {
    // ...
    }
    foo();
    // 此函数在语义上等价于下面的调用
    foo<number>();
  • 非空断言运算符(!)可选链运算符(?

    // 后缀运算符!可用于断言其操作数为非空。
    function foo(a: A | null) {
    a.value; // 编译时错误:无法访问可空值的属性
    a!.value; // 编译通过,如果运行时a的值非空,可以访问到a的属性;如果运行时a的值为空,则发生运行时异常
    }

    // 访问对象属性时,如果属性是undefined或null,可选链运算符返回undefined。
    getSpouseNick(): string | null | undefined {
    return this.spouse?.nick;
    }
    // 说明:getSpouseNick的返回类型必须为string | null | undefined,因为该方法在某些情况下会返回null或undefined。