HarmonyOS 鸿蒙Next TS适配ArkTS规则
HarmonyOS 鸿蒙Next TS适配ArkTS规则
一、使用具体的类型而非any或unknown
规则:arkts-no-any-unknown
级别:错误
ArkTS不支持any和unknown类型。显式指定具体类型。
TypeScript
let value1: any
value1 = true;
value1 = 42;
let value2: unknown
value2 = true;
value2 = 42;
ArkTS
let value_b: boolean = true; // 或者 let value_b = true
let value_n: number = 42; // 或者 let value_n = 42
let value_o1: Object = true;
let value_o2: Object = 42;
相关约束
强制进行严格类型检查
二、使用class而非具有call signature的类型
规则:arkts-no-call-signatures
级别:错误
ArkTS不支持对象类型中包含call signature。
TypeScript
type DescribableFunction = {
description: string
(someArg: string): string // call signature
}
function doSomething(fn: DescribableFunction): void {
console.log(fn.description + ’ returned ’ + fn(’’));
}
ArkTS
class DescribableFunction {
description: string
public invoke(someArg: string): string {
return someArg;
}
constructor() {
this.description = ‘desc’;
}
}
function doSomething(fn: DescribableFunction): void {
console.log(fn.description + ’ returned ’ + fn.invoke(’’));
}
doSomething(new DescribableFunction());
相关约束
使用class而非具有构造签名的类型
三、使用class而非具有构造签名的类型
规则:arkts-no-ctor-signatures-type
级别:错误
ArkTS不支持对象类型中的构造签名。改用类。
TypeScript
class SomeObject {}
type SomeConstructor = {
new (s: string): SomeObject
}
function fn(ctor: SomeConstructor) {
return new ctor(‘hello’);
}
ArkTS
class SomeObject {
public f: string
constructor (s: string) {
this.f = s;
}
}
function fn(s: string): SomeObject {
return new SomeObject(s);
}
相关约束
使用class而非具有call signature的类型
本文根据HarmonyOS NEXT Developer Beta1官方公开的开发文档整理而成。
更多关于HarmonyOS 鸿蒙Next TS适配ArkTS规则的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next TS适配ArkTS规则的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对您提出的“HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(五)”的问题,以下是根据HarmonyOS NEXT Developer Beta1官方开发文档整理的相关信息:
在HarmonyOS 鸿蒙Next原生应用开发中,从TypeScript (TS) 到ArkTS的适配规则涉及多个方面,以下是部分关键规则:
- instanceof运算符的使用限制:在ArkTS中,instanceof运算符的左操作数的类型必须为引用类型(例如,对象、数组或函数),否则会发生编译时错误。此外,左操作数不能是类型,必须是对象的实例。
- 不支持in运算符:由于ArkTS中对象布局在编译时是已知的并且在运行时无法修改,因此不支持in运算符。如果需要检查某些类成员是否存在,可以使用instanceof运算符代替。
- 对象的属性名约束:在ArkTS中,对象的属性名必须是合法的标识符,不能为数字或字符串(除了字符串字面量和枚举中的字符串值)。此外,不支持通过索引访问字段。
- 不支持Symbol() API:由于对象布局在编译时就确定了,且不能在运行时被更改,ArkTS不支持Symbol() API,只支持Symbol.iterator。
- 其他限制:在ArkTS中,不支持解构赋值,不支持delete运算符,仅允许在表达式中使用typeof运算符,并限制使用标准库。
以上是从TS到ArkTS适配的部分关键规则。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html