鸿蒙语言ArkTS(更好的生产力与性能)

ArkTS是鸿蒙生态的应用开发语言

image.png

ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。

同时,它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。

针对JavaScript(简称JS)/TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强。

ArkTS支持与JS/TS高效互操作,兼容JS/TS生态。

ArkTS设计理念

  • 为更好地支持HarmonyOS应用的开发和运行,从Harmony OS NEXT Developer Preview 0版本开始,ArkTS在TS的基础上,进一步通过规范强化静态检查和分析,这样做有两个好处:许多错误在编译时可以被检测出来,不用等到运行时,这大大降低了代码运行错误的风险,有利于程序的健壮性;2.减少运行时的类型检查,从而降低了运行时负载,有助于提升执行性能。
  • ArkTS保留了TS大部分的语法特性,这可以帮助开发者更容易上手ArkTS。同时,对于已有的标准TS代码,开发者仅需对少部分代码进行ArkTS语法适配,大部分代码可以直接复用。
  • ArkTS支持与标准JS/TS的高效互操作,兼容JS/TS生态。HarmonyOS也提供了标准JS/TS的执行环境支持,在“更注重已有生态直接复用”的场景下,开发者可以选择使用标准JS/TS进行代码复用或开发,更方便兼容现有生态。

ArkTS相比TS特性差异

ArkTS通过规范约束了TS中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性,下面通过代码片段说明部分约束特性。

image.png

1.不支持在运行时更改对象布局

image.png

以上TS代码片段展示了如何在运行时通过添加和删除某些属性来更改对象的布局。运行时支持此类特性需要大量的性能开销,ArkTS不支持在运行时更改对象的布局。

在ArkTS中,可以使用可选属性和给该属性赋值undefined的方式来替代。

2.对象字面量须标注类型

image.png

以上TS代码片段展示了没有类型的场景。如果编译器不知道变量point的确切类型,由于对象布局不能确定,编译器无法深度地优化这段代码,造成性能瓶颈。没有类型也会造成属性的类型缺少限制,例如point.x的类型在此时为number,它也可以被赋值成其他类型,造成额外的运行时检查和开销。

在ArkTS中,需要为对象字面量标注类型。

image.png

3.不支持structural typing

image.png

以上TS代码片段展示了structural typing特性。在ArkTS已经采用了nominal typing类型系统的前提下,如果额外支持structural typing给语言实现和开发者均会带来不必要的复杂度。在示例中,foo虽然声明参数类型是C,但也可以传递类型D的变量,这种灵活性可能不符合开发者的意图,容易带来程序行为的正确性问题。另外,由于类型D和类型C布局不同,那么foo中对c.s这个属性访问就不能被优化成根据固定偏移量访问的方式,从而给运行时性能造成瓶颈。

c4239e28a4e48de5e1bbf2ecb8e239cd.jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5G——小区搜索流程

小区搜索流程 小区搜索目标:读取到SIB1. 小区搜索流程概述:SIB1在PDSCH信道承载,承载SIB1的信道在哪个位置由PDCCH告诉,而PDCCH的基本信息由MIB告诉,MIB信息由广播信道PBCH广播出去,物理信道解调需要解调…

Codeforces Round 926 (Div. 2) C. Sasha and the Casino (Java)

Codeforces Round 926 (Div. 2) CC. Sasha and the Casino (Java) 比赛链接:Codeforces Round 926 (Div. 2) C题传送门:C. Sasha and the Casino 题目:C. Sasha and the Casino **Example ** input 2 1 7 2 1 1 2 3 15 3 3 6 4 4 5 5 4 7…

EXCEL中不错的xlookup函数

excel中一般要经常用vlookup函数,但其实经常麻烦要正序,从左边到右边,还要数列,挺麻烦的,xlookup的函数还不错,有个不错的一套视频介绍,B站的,地址是:XLOOKUP函数基础用法&#xff0…

BIG DATA —— 大数据时代

大数据时代 [英] 维克托 迈尔 — 舍恩伯格 肯尼斯 库克耶 ◎ 著 盛杨燕 周涛◎译 《大数据时代》是国外大数据研究的先河之作,本书作者维克托迈尔舍恩伯格被誉为“大数据商业应用第一人”,他在书中前瞻性地指出,大数据带来的信息…

2024.2.17日总结(小程序开发)

父子组件之间的通信 父子组件之间通信的3种方式 属性绑定 用于父组件向子组件的指定属性设置数据,仅能设置JSON 兼容的数据属性绑定用于实现父向子传值,而且只能传递普通类型的数据,无法将方法传递给子组件 事件绑定 用于子组件向父组件…

详解自定义类型:枚举与联合体!

目录 ​编辑 一、枚举类型 1.枚举类型的声明 2.枚举类型的优点 3.枚举类型的使用 二、联合体类型(共用体) 1.联合体类型的声明 2.联合体的特点 3.相同成员的结构体和联合体的对比 4.联合体大小的计算 5.用联合体判断大小端 三.完结散花 悟已往之不谏&…

由于找不到MSVCP140.dll无法运行软件游戏,多种解决方法分享

电脑系统在运行过程中,当出现“由于找不到MSVCP140.dll”这一提示时,可能会引发一系列潜在的问题与影响。当电脑无法找到这个特定的dll文件时,意味着相关应用可能无法顺利加载并执行必要的组件,进而导致程序无法启动或运行过程中频…

CCF编程能力等级认证GESP—C++8级—20231209

CCF编程能力等级认证GESP—C8级—20231209 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)奖品分配大量的工作沟通 答案及解析单选题判断题编程题1编程题2…

HTTPS网络通信协议基础

目录 前言: 1.HTTPS协议理论 1.1协议概念 1.2加密 2.两类加密 2.1对称加密 2.2非对称加密 3.引入“证书” 3.1证书概念 3.2数据证书内容 3.3数据签名 4.总结 前言: 了解完HTTP协议后,HTTPS协议是HTTP协议的升级加强版&#xff0c…

基于协同过滤的时尚穿搭推荐系统

项目:基于协同过滤的时尚穿搭推荐系统 摘 要 基于协同过滤的时尚穿搭推荐系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究服饰流行的分析和预测的分析和预测信息可视化时尚穿搭推荐系统…

相机图像质量研究(32)常见问题总结:图像处理对成像的影响--振铃效应

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

无人机应用场景和发展趋势,无人机技术的未来发展趋势分析

随着科技的不断发展,无人机技术也逐渐走进了人们的生活和工作中。无人机被广泛应用于很多领域,例如遥感、民用、军事等等。本文将围绕无人机技术的应用场景和发展趋势,从多角度展开分析。 无人机技术的应用场景 无人机在遥感方面的应用&…

文生视频提示词:故事与主题

内容创意 --故事与主题 Story & Theme 这些词汇覆盖了从基本的故事类型到特定的主题和元素,可用于激发创意和定义视频内容的核心主题。 Adventure 冒险 Romance 浪漫 Mystery 神秘 Fantasy 幻想 Science Fiction 科幻 Horror 恐怖 Thriller 惊悚 Comedy 喜剧 Dr…

Ubuntu20.04 安装jekyll

首先使根据官方文档安装:Jekyll on Ubuntu | Jekyll • Simple, blog-aware, static sites 如果没有报错,就不用再继续看下去了。 我这边在执行gem install jekyll bundler时报错,所以安装了rvm,安装rvm可以参考这篇文章Ubuntu …

阿里云服务器ECS租赁费用报价_CPU内存_带宽和系统盘价格表

2024年最新阿里云服务器租用费用优惠价格表,轻量2核2G3M带宽轻量服务器一年61元,折合5元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年,2核4G4M轻量服务器165元一年,2核4G服务器30元3…

Python学习04 --- 函数进阶以及文件相关操作

1.函数的多返回值 1.函数可以有多个返回值,返回值之间用逗号隔开 2.多个返回值之间的类型可以不同 3.函数返回多个返回值时,我们也要用多个变量接收函数返回值,具体语法如上: 根据位置一一对应,x,y,z分别对应返回值…

fusion360 操作总结(不断更新)

平移缩放旋转快捷键 画布选择Windows 组合键macOS 组合键平移按住鼠标中键按住鼠标中键缩放滚动鼠标中键滚动鼠标中键动态观察旋转按住 Shift 键并按住鼠标中键按住 Shift 键并按住鼠标中键绕点动态观察按住 Shift 键单击并按住鼠标中键按住 Shift 键单击并按住鼠标中键撤消Ct…

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …

吴恩达深度学习-L1 神经网络和深度学习总结

作业地址:吴恩达《深度学习》作业线上版 - 知乎 (zhihu.com) 写的很好的笔记:吴恩达《深度学习》笔记汇总 - 知乎 (zhihu.com) 我的「吴恩达深度学习笔记」汇总帖(附 18 个代码实战项目) - 知乎 (zhihu.com) 此处只记录需…

SG5032EAN规格书

SG5032EAN 晶体振荡器结合了相位锁定环(PLL)技术和AT切割晶体单元,提供了73.5 MHz至700 MHz的广泛频率范围,以满足高速数字应用的需求。高性能的LV-PECL输出,2.5V和3.3V电源电压,可灵活适配不同设计的电源需…