一、不支持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官方公开的开发文档整理而成