前言:
ArkTS语言是官方主推的开发鸿蒙原生App应用的语言,该语言的语法和TypeScript比较相似,对于有前端基础的同学,学习起来应该比较容易。本节主要介绍下ArkTS与TypeScript的关系,以及ArkTS的特性。总结一句话,ArkTS是语法的定义,ArkUI是基于该语法的UI框架。鸿蒙原生开发语言集成了TS的语法(ArkTS),集成了目前流行的前端框架中的数据驱动UI的能力,并提供一套现成的UI框架(ArkUI),这样的一个超集
一、ArkTS 与 TypeScript的关系
ArkTS是HarmonyOS优选的主力应用开发语言。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的,而ArkTS则是TypeScript的进一步扩展。ArkTS旨在保持TypeScript的大部分语法,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。(可以认为ArkTS是在严格模式下执行的js程序,限制了很多js和TS语法的使用,为的就是提高程序执行稳定性和性能,把一些可能引起异常的代码在编译阶段就检查出来)。如果有TS开发经验的同学,不用担心具体ArkTS限制了哪些TS的语法,大家可以就先按照TS语法来实现,如果不符合ArkTS的规则,编译器会报错,大家可以根据报错信息,到这个链接去查询 文档中心,里面会有对应的转换案例
对比标准TypeScript的差异主要有以下几点:
1、强制使用静态类型:
静态类型是ArkTS最重要的特性之一。即在参数定义或者方法定义时,必须使用明确的参数类型,不能使用any,unkown,如果参数可能为空,必须显示声明undefined类型。这样在编译阶段就能检查代码正确性,减少运行时类型检查,提升性能。
如下:TypeScript支持如下变量声明为any或者unknown类型,但是ArkTS中必须显示指定具体类型,否则编译器会报错
2、禁止在运行时改变对象布局:
为实现最大性能,ArkTS要求在程序执行期间不能更改对象布局。这个主要指,对象一旦定义完成,在程序运行阶段,就不允许删除对象属性,或者增加对象属性
3、限制运算符语义:
为获得更好的性能并鼓励开发者编写更清晰的代码,ArkTS限制了一些运算符的语义。比如,一元加法运算符只能作用于数字,不能用于其他类型的变量。
4、不支持Structural typing:
对Structural typing的支持需要在语言、编译器和运行时进行大量的考虑和仔细的实现。另外,由于ArkTS使用静态类型,运行时为了支持这个特性需要额外的开销。
什么叫Structural typing:比如对象类型T和U没有继承关系或没有implements相同的接口,但由于它们具有相同的方法,它们“在某种程度上是相等的”。
如下:T和U具有相同的方法greet(),但它们没有继承关系。当支持将T赋值给U表示支持Structural typing。
二、ArkTS在UI框架上的扩展,并提供系统自带UI框架,ArkUI
ArkUI框架,提供了丰富的系统组件(按钮,弹窗,文本,图片,各种布局,动画等),ArkTS主要扩展能力如下:
1、基本语法:
ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。
2、状态管理:
这里的状态和前端框架react、vue中的状态非常类似,都是通过状态变量的刷新来驱动UI的更新。ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活地利用这些能力来实现数据和UI的联动。
3、渲染控制:
这里渲染控制也和前端框架react、vue中类似,提供了if条件渲染,ForEach循环渲染等。ArkTS也提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。
【原创声明】
本文为本人原创文章,首次发表于【51CTO作者zhujian8263 】,原文链接:[一、【鸿蒙 NEXT】鸿蒙原生开发语言:ArkTS语言介绍_11956021的技术博客_51CTO博客]。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。