逗号运算符,仅用在for循环语句中
规则:arkts-no-comma-outside-loops
级别:错误
为了方便理解执行顺序,在ArkTS中,逗号运算符仅适用于for循环语句中。注意与声明变量、函数参数传递时的逗号分隔符不同。
TypeScript

for (let i = 0, j = 0; i < 10; ++i, j += 2) {
  // ...
}

let x = 0;
x = (++x, x++); // 1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

ArkTS

for (let i = 0, j = 0; i < 10; ++i, j += 2) {
  // ...
}

// 通过语句表示执行顺序,而非逗号运算符
let x = 0;
++x;
x = x++;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

不支持解构变量声明
规则:arkts-no-destruct-decls
级别:错误
ArkTS不支持解构变量声明。它是一个依赖于结构兼容性的动态特性并且解构声明中的名称必须和被解构对象中的属性名称一致。
TypeScript

class Point {
  x: number = 0.0
  y: number = 0.0
}

function returnZeroPoint(): Point {
  return new Point();
}

let {x, y} = returnZeroPoint();
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

ArkTS

x: number = 0.0
  y: number = 0.0
}

function returnZeroPoint(): Point {
  return new Point();
}

// 创建一个局部变量来处理每个字段
let zp = returnZeroPoint();
let x = zp.x;
let y = zp.y;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

不支持在catch语句标注类型
规则:arkts-no-types-in-catch
级别:错误
在TypeScript的catch语句中,只能标注any或unknown类型。由于ArkTS不支持这些类型,应省略类型标注。
TypeScript

try {
  // ...
} catch (a: unknown) {
  // 处理异常
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

ArkTS

try {
  // ...
} catch (a) {
  // 处理异常
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

相关约束
限制throw语句中表达式的类型
本文根据HarmonyOS NEXT Developer Beta1官方公开的开发文档整理而成。