当前位置: 首页 > news >正文

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

一、限制省略函数返回类型标注
规则:arkts-no-implicit-return-types
级别:错误
ArkTS在部分场景中支持对函数返回类型进行推断。当return语句中的表达式是对某个函数或方法进行调用,且该函数或方法的返回类型没有被显著标注时,会出现编译时错误。在这种情况下,请标注函数返回类型。
TypeScript

// 只有在开启noImplicitAny选项时会产生编译时错误
function f(x: number) {if (x <= 0) {return x;}return g(x);
}// 只有在开启noImplicitAny选项时会产生编译时错误
function g(x: number) {return f(x - 1);
}function doOperation(x: number, y: number) {return x + y;
}f(10);
doOperation(2, 3);

ArkTS

// 需标注返回类型:
function f(x: number): number {if (x <= 0) {return x;}return g(x);
}// 可以省略返回类型,返回类型可以从f的类型标注推导得到
function g(x: number): number {return f(x - 1);
}// 可以省略返回类型
function doOperation(x: number, y: number) {return x + y;
}f(10);
doOperation(2, 3);

二、不支持参数解构的函数声明
规则:arkts-no-destruct-params
级别:错误
ArkTS要求实参必须直接传递给函数,且必须指定到形参。
TypeScript

function drawText({ text = '', location: [x, y] = [0, 0], bold = false }) {text;x;y;bold;
}drawText({ text: 'Hello, world!', location: [100, 50], bold: true });

ArkTS

function drawText(text: String, location: number[], bold: boolean) {let x = location[0];let y = location[1];text;x;y;bold;
}function main() {drawText('Hello, world!', [100, 50], true);
}

三、不支持在函数内声明函数
规则:arkts-no-nested-funcs
级别:错误
ArkTS不支持在函数内声明函数,改用lambda函数。
TypeScript

function addNum(a: number, b: number): void {// 函数内声明函数function logToConsole(message: string): void {console.log(message);}let result = a + b;// 调用函数logToConsole('result is ' + result);
}

ArkTS

function addNum(a: number, b: number): void {// 使用lambda函数代替声明函数let logToConsole: (message: string) => void = (message: string): void => {console.log(message);}let result = a + b;logToConsole('result is ' + result);
}

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Nexus3为containerd和docker配置镜像代理
  • 前端怎么用 EventSource并配置请求头及加参数(流式数据)
  • Hyperf 安装,使用,
  • 单一责任原则
  • CentOS7上安装RabbitMQ
  • 正则表达式入门:Python ‘ re ‘ 模块详解
  • C++内存泄漏--**关于“异常0xc0000005 读取的位置 0xDDDDDDDD时发生冲突”
  • Flask详细教程
  • <STC32G12K128入门第十步>USB HID键盘
  • 5年前端面试之路
  • 【LeetCode Cookbook(C++ 描述)】一刷二叉树综合(下)
  • “AI+Security”系列第2期(三):面向LLM(大语言模型)的漏洞挖掘与对齐防御研究
  • 橙色简洁大气体育直播自适应模板赛事直播门户自适应网站源码
  • YOLOv10:实时端到端目标检测
  • Linux驱动学习之点灯(一)
  • (三)从jvm层面了解线程的启动和停止
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 10个确保微服务与容器安全的最佳实践
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ECMAScript6(0):ES6简明参考手册
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES学习笔记(12)--Symbol
  • hadoop集群管理系统搭建规划说明
  • Java应用性能调优
  • Laravel Mix运行时关于es2015报错解决方案
  • Mysql优化
  • Quartz初级教程
  • SSH 免密登录
  • Zepto.js源码学习之二
  • 基于axios的vue插件,让http请求更简单
  • 强力优化Rancher k8s中国区的使用体验
  • 双管齐下,VMware的容器新战略
  • 小程序开发中的那些坑
  • 因为阿里,他们成了“杭漂”
  • 用 Swift 编写面向协议的视图
  • Prometheus VS InfluxDB
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • UI设计初学者应该如何入门?
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​插件化DPI在商用WIFI中的价值
  • ###STL(标准模板库)
  • #java学习笔记(面向对象)----(未完结)
  • #Linux(权限管理)
  • (1)虚拟机的安装与使用,linux系统安装
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (C#)获取字符编码的类
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (不用互三)AI绘画工具应该如何选择
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四) 虚拟摄像头vivi体验