Openharmony开发记录-从API9转API10的痛苦之路

这篇具有很好参考价值的文章主要介绍了Openharmony开发记录-从API9转API10的痛苦之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Openharmony开发记录-从API9转API10的痛苦之路

由于业务需求更新的API前段时间写的APP需要更新到API10,记录在修改过程中发现的一系列问题

arkts-no-for-in

"for .. in" is not supported (arkts-no-for-in) <ArkTSCheck>

不支持for .. in

规则:arkts-no-for-in

级别:错误

由于在ArkTS中,对象布局在编译时是确定的、并且不能在运行时被改变,所以不支持使用for .. in迭代一个对象的属性。对于数组来说,可以使用常规的for循环。

应用代码

interface Person {
  [name: string]: string
}
let p: Person = {
  name: 'tom',
  age: '18'
};

for (let t in p) {
  console.log(p[t]);
}
typescript

建议改法

let p: Record<string, string> = {
  'name': 'tom',
  'age': '18'
};

for (let ele of Object.entries(p)) {
  console.log(ele[1]);
}

 arkts-no-props-by-index

不支持通过索引访问字段

规则:arkts-no-props-by-index

级别:错误

ArkTS不支持动态声明字段,不支持动态访问字段。只能访问已在类中声明或者继承可见的字段,访问其他字段将会造成编译时错误。 使用点操作符访问字段,例如(obj.field),不支持索引访问(obj[field])。 ArkTS支持通过索引访问TypedArray(例如Int32Array)中的元素。

可以转换成Record类型,用来访问对象的属性。

应用代码

import myRouter from '@ohos.router';
let params: Object = myRouter.getParams();
let funNum: number = params['funNum'];
let target: string = params['target'];
typescript

建议改法

import myRouter from '@ohos.router';
let params = myRouter.getParams() as Record<string, string | number>;
let funNum: number = params.funNum as number;
let target: string = params.target as string;

arkts-no-inferred-generic-params

需要显式标注泛型函数类型实参

规则:arkts-no-inferred-generic-params

级别:错误

如果可以从传递给泛型函数的参数中推断出具体类型,ArkTS允许省略泛型类型实参。否则,省略泛型类型实参会发生编译时错误。 禁止仅基于泛型函数返回类型推断泛型类型参数。

应用代码

class A {
  str: string = ''
}
class B extends A {}
class C extends A {}

let arr: Array<A> = [];

let originMenusMap:Map<string, C> = new Map(arr.map(item => [item.str, (item instanceof C) ? item: null]));
typescript

建议改法

class A {
  str: string = ''
}
class B extends A {}
class C extends A {}

let arr: Array<A> = [];

let originMenusMap: Map<string, C | null> = new Map<string, C | null>(arr.map<[string, C | null]>(item => [item.str, (item instanceof C) ? item: null]));
typescript

原因

(item instanceof C) ? item: null 需要声明类型为C | null,由于编译器无法推导出map的泛型类型参数,需要显式标注。

arkts-identifiers-as-prop-names

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

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

级别:错误

在ArkTS中,对象的属性名不能为数字或字符串。通过属性名访问类的属性,通过数值索引访问数组元素。文章来源地址https://www.toymoban.com/news/detail-856301.html

应用代码

interface W {
  bundleName: string
  action: string
  entities: string[]
}

let wantInfo: W = {
  'bundleName': 'com.huawei.hmos.browser',
  'action': 'ohos.want.action.viewData',
  'entities': ['entity.system.browsable']
}
typescript

建议改法

interface W {
  bundleName: string
  action: string
  entities: string[]
}

let wantInfo: W = {
  bundleName: 'com.huawei.hmos.browser',
  action: 'ohos.want.action.viewData',
  entities: ['entity.system.browsable']
}

到了这里,关于Openharmony开发记录-从API9转API10的痛苦之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenHarmony SystemUI开发记录

    最近学习OpenHarmony应用开发, SDK版本是3.2.9.2 Beta4,IDE版本是3.1.0.200。参考官方文档,做了个Demo应用,调试、运行非常顺利。启动应用后,状态栏和导航栏占用的高度过高,显得很奇怪,尝试修改一下系统应用。 因为没做过移动端开发,最初以为状态栏和导航栏是由Launcher控

    2023年04月20日
    浏览(38)
  • 【HarmonyOS】API9网络buffer图片加载

      【引言】 HarmonyOS中加载网络图片常用的方法是直接给Image组件添加图片的网络地址,申请网络权限ohos.permission.INTERNET后就可以通过url加载对应的图片了,如HarmonyOS官网中的写法: 【问题概述】 但是日常开发中有些图片是存储云服务器中的,下载这些图片需要通过鉴权接口

    2024年02月14日
    浏览(46)
  • 鸿蒙API9+axios封装一个通用工具类

    使用方式: 打开Harmony第三方工具仓,找到axios,如图: 第三方工具仓网址:https://ohpm.openharmony.cn/#/cn/home 在你的项目执行命令:ohpm install @ohos/axios 前提是你已经装好了ohpm ,如果没有安装,可以在官网找到详细的安装教程; 注意:不是在你的entry目录下,比如你的项目名称:

    2024年04月17日
    浏览(60)
  • 【AGC】认证服务HarmonyOS(api9)实现手机号码认证登录

    【问题背景】 近期AGC上线了HarmonyOS(api9)平台的SDK,这样api9的设备也能使用认证服务进行快速认证登录了。下面为大家带来如何使用auth SDK(api9)实现手机号码认证登录。 【开通服务】 1.登录AppGallery Connect,点击“我的项目”,在项目的应用列表中选择您需要开通认证服务的

    2024年02月15日
    浏览(46)
  • 记录--使用率比较低的10个Web API

    avaScript中有些API可能使用率比较低,下面我们逐一介绍它们的用法和使用场景。 至于标题,主要是想让你进来看看,兄弟们别打我! Blob API 用于处理二进制数据,可以方便地将数据转换为Blob对象或从Blob对象读取数据。 使用场景:在Web应用中,可能需要上传或下载二进制文

    2024年02月06日
    浏览(34)
  • AI大模型探索之路-应用篇16:GLM大模型-ChatGLM3 API开发实践

    目录 一、ChatGLM3-6B模型API调用 1. 导入相关的库 2. 加载tokenizer 3. 加载预训练模型 4. 实例化模型 5.调用模型并获取结果 二、OpenAI风格的代码调用 1. Openai api 启动 2. 使用curl命令测试返回 3. 使用Python发送POST请求测试返回 4. 采用GLM提供的chat对话方式 5. Embedding处理 三、Functio

    2024年04月23日
    浏览(45)
  • 记录:Qt Creator 10配置安卓开发环境

    Qt Creator 现在的安卓开发环境配置相比老版本方便了不少,本文以目前在线安装版的 Qt Creator 10.0.2 + Qt 5.15 / Qt 6.5 为例做演示(有些文件可能会因为网络问题需要科学上网才能下载)。 https://adoptium.net/zh-CN/temurin/releases/ Oracle 的 JDK 有商业授权问题,所以直接下 OpenJDK 就行了。

    2024年02月10日
    浏览(48)
  • OpenHarmony-4.0-Release 源码编译记录

    本文基于 Ubuntu 20.04.4 LTS 这个没啥好说的,都是搞机的,用之前编译 aosp 的 linux 环境就行,有小伙伴担心会把之前的环境搞崩, 也有用 docker 编译的,我这里就直接在 aosp 环境下搞了,还省事。 安装下面这三东西,是为了下载 Harmony 源码 sudo apt install curl sudo apt install python3

    2024年02月05日
    浏览(54)
  • 【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)

    本人只是一个普普通通的 GIS 学生, 下面是记录我的写的一个作业 demo 的内容, 可能会存在一定的错误, 欢迎在评论区私信交流! *完整功能展示看这里 (B站) *感兴趣可以下载完整 demo 看看 (阿里云盘) 本网站(GIS考研院校可视化专题网站)为2022年GIS考研初期准备择校的学生服务

    2024年02月13日
    浏览(85)
  • iOS开发Swift-10-位置授权, cocoapods,API,天气获取,城市获取-和风天气App首页代码

     1.获取用户当前所在的位置 在infi中点击加号,选择权限:当用户使用app的时候获取位置权限. 填写使用位置权限的目的.  2.获取用户的经纬度. ViewController:  3.通过第三方服务获取当前天气 (1)安装cocoapods https://dev.qweather.com/ 在网站中可以找到,当向 https://devapi.qweather.com/v7/weathe

    2024年02月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包