一、不支持以#开头的私有字段
规则:arkts-no-private-identifiers
级别:错误
ArkTS不支持使用#符号开头声明的私有字段。改用private关键字。
TypeScript
class C {
#foo: number = 42
}
ArkTS
class C {
private foo: number = 42
}
二、类型、命名空间的命名必须唯一
规则:arkts-unique-names
级别:错误
类型(类、接口、枚举)、命名空间的命名必须唯一,且与其他名称(例如:变量名、函数名)不同。
TypeScript
let X: string
type X = number[] // 类型的别名与变量同名
ArkTS
let X: string
type T = number[] // 为避免名称冲突,此处不允许使用X
三、使用let而非var
规则:arkts-no-var
级别:错误
let关键字可以在块级作用域中声明变量,帮助程序员避免错误。因此,ArkTS不支持var,请使用let声明变量。
TypeScript
function f(shouldInitialize: boolean) {
if (shouldInitialize) {
var x = 'b';
}
return x;
}
console.log(f(true)); // b
console.log(f(false)); // undefined
let upperLet = 0;
{
var scopedVar = 0;
let scopedLet = 0;
upperLet = 5;
}
scopedVar = 5; // 可见
scopedLet = 5; // 编译时错误
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.
ArkTS
function f(shouldInitialize: boolean): string {
let x: string = 'a';
if (shouldInitialize) {
x = 'b';
}
return x;
}
console.log(f(true)); // b
console.log(f(false)); // a
let upperLet = 0;
let scopedVar = 0;
{
let scopedLet = 0;
upperLet = 5;
}
scopedVar = 5;
scopedLet = 5; //编译时错误
本文根据HarmonyOS NEXT Developer Beta1官方公开的开发文档整理而成。