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

一、对象的属性名必须是合法的标识符

规则:arkts-identifiers-as-prop-names

级别:错误

在ArkTS中,对象的属性名不能为数字或字符串。例外:ArkTS支持属性名为字符串字面量和枚举中的字符串值。通过属性名访问类的属性,通过数值索引访问数组元素。

TypeScript

复制代码
var x = { 'name': 'x', 2: '3' };

console.log(x['name']);
console.log(x[2]);

ArkTS

复制代码
class X {
  public name: string = ''
}
let x: X = { name: 'x' };
console.log(x.name);

let y = ['a', 'b', 'c'];
console.log(y[2]);

// 在需要通过非标识符(即不同类型的key)获取数据的场景中,使用Map<Object, some_type>。
let z = new Map<Object, string>();
z.set('name', '1');
z.set(2, '2');
console.log(z.get('name'));
console.log(z.get(2));

enum Test {
  A = 'aaa',
  B = 'bbb'
}

let obj: Record<string, number> = {
  [Test.A]: 1,   // 枚举中的字符串值
  [Test.B]: 2,   // 枚举中的字符串值
  ['value']: 3   // 字符串字面量
}

相关约束

不支持Symbol() API

不支持通过索引访问字段

不支持delete运算符

仅允许在表达式中使用typeof运算符

不支持in运算符

限制使用标准库

二、不支持Symbol()API

规则:arkts-no-symbol

级别:错误

TypeScript中的Symbol()API用于在运行时生成唯一的属性名称。由于该API的常见使用场景在静态类型语言中没有意义,因此,ArkTS不支持Symbol()API。在ArkTS中,对象布局在编译时就确定了,且不能在运行时被更改。

ArkTS只支持Symbol.iterator。

相关约束

仅支持属性名为标识符的对象

不支持通过索引访问字段

不支持delete运算符

仅允许在表达式中使用typeof运算符

不支持in运算符

限制使用标准库

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

相关推荐
爱吃大芒果2 小时前
GitCode口袋工具的部署运行教程
flutter·华为·harmonyos·gitcode
爱吃大芒果2 小时前
Flutter基础入门与核心能力构建——Widget、State与BuildContext核心解析
flutter·华为·harmonyos
威哥爱编程6 小时前
【鸿蒙开发案例篇】鸿蒙6.0计算器实现详解
harmonyos·arkts·arkui
威哥爱编程6 小时前
【鸿蒙开发案例篇】鸿蒙跨设备实时滤镜同步的完整方案
harmonyos·arkts·arkui
L、2188 小时前
统一日志与埋点系统:在 Flutter + OpenHarmony 混合架构中实现全链路可观测性
javascript·华为·智能手机·electron·harmonyos
hefengbao10 小时前
『京墨文库』鸿蒙版上线!
harmonyos·arkts·arkui·arkdata
赵浩生10 小时前
鸿蒙技术干货6:鸿蒙权限管理与后台任务开发指南(下)
harmonyos
赵浩生10 小时前
鸿蒙技术干货5:鸿蒙权限管理与后台任务开发指南(上)
harmonyos
kirk_wang11 小时前
Flutter插件跨平台适配技术分析之是否需要适配鸿蒙端-screenshot
flutter·华为·harmonyos
赵财猫._.12 小时前
React Native鸿蒙开发实战(七):性能优化与调试技巧
react native·性能优化·harmonyos