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

发布于 1周前 作者 vueper 来自 鸿蒙OS

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

级别:错误

在ArkTS中,对象布局在编译时就确定了,且不能在运行时被更改。ArkTS不支持Symbol() API。ArkTS只支持Symbol.iterator。

相关约束

  • 仅支持属性名为标识符的对象
  • 不支持通过索引访问字段
  • 不支持delete运算符
  • 仅允许在表达式中使用typeof运算符
  • 不支持in运算符
  • 限制使用标准库

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


更多关于HarmonyOS 鸿蒙Next 原生应用开发-从TS到ArkTS的适配规则(三)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 原生应用开发-从TS到ArkTS的适配规则(三)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 原生应用开发-从TS(TypeScript)到ArkTS的适配规则(三)”的问题,以下是对鸿蒙相关内容的直接回答:

在HarmonyOS鸿蒙Next原生应用开发中,从TypeScript(TS)到ArkTS的适配主要涉及语言特性和框架特性的转换。ArkTS是鸿蒙系统为原生应用开发提供的一种新的声明式编程语言,它基于TypeScript扩展,但增加了一些针对鸿蒙系统特性的语法和API。

适配规则通常包括以下几个方面:

  1. 语法转换:需要将TypeScript中的部分语法转换为ArkTS支持的语法,例如组件的定义、属性的声明等。

  2. API适配:鸿蒙系统提供了一些特定的API,开发者需要将TypeScript中使用的第三方库或API替换为鸿蒙系统提供的对应API。

  3. 生命周期管理:ArkTS对组件的生命周期管理有自己的机制,开发者需要按照鸿蒙系统的要求来管理组件的生命周期。

  4. 资源引用:在ArkTS中,资源的引用方式可能与TypeScript有所不同,开发者需要按照鸿蒙系统的规范来引用资源。

如果在适配过程中遇到问题,可以参考鸿蒙系统的官方文档或相关教程。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部