HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(十五)

鸿蒙时代
发布于 2024-8-19 16:04
浏览
0收藏

一、不支持for … in
规则:arkts-no-for-in
级别:错误
由于在ArkTS中,对象布局在编译时是确定的、并且不能在运行时被改变,所以不支持使用for … in迭代一个对象的属性。对于数组来说,可以使用常规的for循环。
TypeScript

let a: string[] = ['1.0', '2.0', '3.0'];
for (let i in a) {
  console.log(a[i]);
}

ArkTS

let a: string[] = ['1.0', '2.0', '3.0'];
for (let i = 0; i < a.length; ++i) {
  console.log(a[i]);
}

二、不支持映射类型
规则:arkts-no-mapped-types
级别:错误
ArkTS不支持映射类型,使用其他语法来表示相同的语义。
TypeScript

type OptionsFlags<Type> = {
  [Property in keyof Type]: boolean
}

ArkTS

class C {
  n: number = 0
  s: string = ''
}

class CFlags {
  n: boolean = false
  s: boolean = false
}

三、不支持with语句
规则:arkts-no-with
级别:错误
ArkTS不支持with语句,使用其他语法来表示相同的语义。
TypeScript

with (Math) { // 编译时错误, 但是仍能生成JavaScript代码
  let r: number = 42;
  let area: number = PI * r * r;
}

ArkTS

let r: number = 42;
let area: number = Math.PI * r * r;

四、限制throw语句中表达式的类型
规则:arkts-limited-throw
级别:错误
ArkTS只支持抛出Error类或其派生类的实例。禁止抛出其他类型(例如number或string)的数据。
TypeScript

throw 4;
throw '';
throw new Error();

ArkTS

throw new Error();

本文根据HarmonyOS NEXT Developer Beta1官方公开的开发文档整理而成

分类
标签
收藏
回复
举报
回复
    相关推荐