OpenHarmony—ArkTS限制throw语句中表达式的类型

news2024/11/18 13:28:19

规则:arkts-limited-throw

级别错误

ArkTS只支持抛出Error类或其派生类的实例。禁止抛出其他类型(例如number或string)的数据。

TypeScript

throw 4;
throw '';
throw new Error();

ArkTS

throw new Error();

限制省略函数返回类型标注

规则: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);
}

不支持在函数和类的静态方法中使用this

规则:arkts-no-standalone-this

级别错误

ArkTS不支持在函数和类的静态方法中使用this,只能在类的实例方法中使用this。

TypeScript

function foo(i: string) {
  this.count = i; // 只有在开启noImplicitThis选项时会产生编译时错误
}

class A {
  count: string = 'a'
  m = foo
}

let a = new A();
console.log(a.count); // 打印a
a.m('b');
console.log(a.count); // 打印b

ArkTS

class A {
  count: string = 'a'
  m(i: string): void {
    this.count = i;
  }
}

function main(): void {
  let a = new A();
  console.log(a.count);  // 打印a
  a.m('b');
  console.log(a.count);  // 打印b
}

相关约束

不支持Function.apply、Function.bind以及Function.call

那么要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《OpenHarmony4.0&Next》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《一小时快速认识HarmonyOS》

在这里插入图片描述

除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1.应用开发导读(ArkTS)

2.……
在这里插入图片描述

二、HarmonyOS 概念

1.系统定义

2.技术架构

3.技术特性

4.系统安全

5…
在这里插入图片描述

三、如何快速入门?《鸿蒙4.0源码开发架构分析pdf》

1.基本概念

2.构建第一个ArkTS应用

3.构建第一个JS应用

4.……
在这里插入图片描述

四、开发基础知识

1.应用基础知识

2.配置文件

3.应用数据管理

4.应用安全管理

5.应用隐私保护

6.三方应用调用管控机制

7.资源分类与访问

8.学习ArkTS语言

9.……
在这里插入图片描述

五、基于ArkTS 开发

1.Ability开发

2.UI开发

3.公共事件与通知

4.窗口管理

5.媒体

6.安全

7.网络与链接

8.电话服务

9.数据管理

10.后台任务(Background Task)管理

11.设备管理

12.设备使用信息统计

13.DFX

14.国际化开发

15.折叠屏系列

16.……
在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙HarmonyOS分布式项目实战》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1419345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 799 (Div. 4)

目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…

欧拉角及Eigen库中eulerAngles函数的理解

欧拉角方向 以右手坐标系为例&#xff0c;大拇指表示X轴&#xff0c;食指表示Y轴&#xff0c;中指表示Z轴。 大拇指朝向某个轴的正方向&#xff0c;手掌弯曲的方向即为某个轴欧拉角的正方向。 Eigen库中eulerAngles函数 旋转矩阵转欧拉角(Z-Y-X&#xff0c;即RPY&#xff09…

防御保护----防火墙基本知识

一.防火墙的基本知识--------------------------------------------------------- 防火墙&#xff1a;可以想象为古代每个城市的城墙&#xff0c;用来防守敌军的攻击。墙&#xff0c;始于防&#xff0c;忠于守。从古至今&#xff0c;墙予人以安全之意。 防火墙的主要职责在于&…

IDE开发工具Idea使用(IDEA安装与卸载,详细配置,快捷键,代码模板,创建模板,Debug调试,生成javadoc,导入模块,导出jar)

文章目录 一、IntelliJ IDEA 介绍1、JetBrains 公司介绍2、IntelliJ IDEA 介绍3、IDEA 的下载 二、安装与卸载1、安装前的准备2、安装过程3、卸载过程方式一&#xff1a;【控制面板】中卸载如何打开控制面板&#xff1f; 三、初始化配置与激活四、HelloWorld1、新建Java类2、编…

Linux浅学笔记03

目录 有关root的命令 用户和用户组 用户组管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户组: 删除用户组&#xff1a; 用户管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户&#xff1a; 删除用户&#xff1a; 查看用…

开关电源调试会遇到哪些问题?怎么解决?

一般在使用电气设备之前都会调试&#xff0c;以便及时发现问题并采取措施解决。开关电源也一样会进行调试&#xff0c;那么在调试开关电源的过程中会遇到哪些问题呢? 又该如何解决呢? 1. 空载、轻载无法启动 开关电源在空载和轻载情况下&#xff0c;由于绕组的感应电压太低&a…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向&#xff1a; Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

深度强化学习(王树森)笔记09

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

网络防御安全知识(第二版)

安全策略 传统的包过滤防火墙 --- 其本质为ACL列表&#xff0c;根据数据报中的特征进行过滤&#xff0c;之后对比规制&#xff0c; 执行动作。 五元组 --- 源IP&#xff0c; 目标IP&#xff0c;源端口&#xff0c; 目标端口&#xff0c;协议 安全策略 --- 相较于ACL的改进之…

centos7上安装mysql5.7并自定义数据目录路径

1、卸载mariadb rpm -qa |grep mariadb #查出来的结果是mariadb-libs-5.5.68-1.el7.x86_64 rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps #卸载查到的结果 2、官网下载响应的tar.gz包&#xff0c;比如mysql-5.7.38-el7-x86_64.tar.gz &…

Vue中配置页面加载进度条

目录 &#x1f389;应用场景 &#x1f389;在Vue中使用 1.安装nprogress 2.配置进度条 3.配置进度条的颜色 4.其他配置选项 &#x1f389;结语 &#x1f389;应用场景 像页面中的这种加载进度条的效果&#xff0c;可以更好为用户提供视觉上的反馈&#xff0c;让他们知道…

【超详细教程】GPT-SoVITs从零开始训练声音克隆教程(主要以云端AutoDL部署为例)

目录 一、前言 二、GPT-SoVITs使用教程 2.1、Windows一键启动 2.2、AutoDL云端部署 2.3、人声伴奏分离 2.4、语音切割 2.5、打标训练数据 2.6、数据集预处理 2.7、训练音频数据 2.8、推理模型 三、总结 一、前言 近日&#xff0c;RVC变声器的创始人&#xff08;GitH…

Django学习资料

相关链接 Django官网&#xff1a;The web framework for perfectionists with deadlines | Django Django 文档&#xff1a;Django 文档 | Django 文档 | Django

【劳德巴赫 Trace32 高阶系列 1 -- svf 文件介绍】

文章目录 SVF 文件概述SVF文件的格式以及头Trace32 如何识别和使用SVF文件如何使用SVF文件SVF 命令支持总结小结总结SVF 文件概述 SVF 文件是一种ASCII文本文件,用于描述JTAG(Joint Test Action Group)测试动作的串行向量。这些文件包含了对JTAG TAP(Test Access Port)的…

第一节课,用户管理--后端初始化,项目调通。二次翻工2

一、网址来源&#xff1a; 快速开始 | MyBatis-Plus (baomidou.com) 进程&#xff1a; ​ 二、[此处不看]添加测试类&#xff0c;看下效果 2.1 参考 一、第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通-CSDN博客 ​ 2.2 新建 SampleTest ​ 2.3 复…

【Java程序设计】【C00171】基于SSM的智慧篮球馆预约管理系统(论文+PPT)

基于SSM的智慧篮球馆预约管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的智慧篮球馆预约管理系统 本系统分为前台、管理员以及学生3个功能模块。 前台&#xff1a;当游客打开系统的网址后&#xff0c;首先看到…

Oracle RAC 关键参数与常用命令

文章目录 一、Oracle RAC集群 关键参数1、静态参数2、唯一参数3、可变参数4、参数实践 二、常用命令1、crsctl&#xff1a;2、srvctl&#xff1a;3、asm&#xff1a;4、OCR&#xff1a;5、OLR:6、VF&#xff1a; 一、Oracle RAC集群 关键参数 RAC上的参数大致分为以下几类。 所…

项目实现网页分享QQ空间功能

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f380;源码如下&#xff1a; &#x1f412;个人主页 &#x1f3c5;Vue项目常用组件模板仓库 &#x1f4d6;前言&#xff1a; 本篇博客主要提供“点击转发按钮&#x…

【学网攻】 第(15)节 -- 标准ACL访问控制列表

系列文章目录 目录 系列文章目录 文章目录 前言 一、ACL(访问控制列表)是什么? 二、实验 1.引入 实验拓扑图 实验配置 测试PC2能否Ping通PC3 配置ACL访问控制 实验验证 PC1 Ping PC3 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认…

RK3568平台开发系列讲解(Linux系统篇)platform 设备的注册

🚀返回专栏总目录 文章目录 一、platform_device_register 注册函数二、platform_device_unregister 反注册函数三、platform_device 结构体四、resource 结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 一、platform_device_register 注册函数 platform_device_re…