TypeScript(简称TS)是JavaScript的一个超集,添加了静态类型选项。而ArkTS又是在TS基础上进行了一些拓展。
一、在ArkTS中,数据类型分类可以分为以下几种:
-
基本数据类型 :
-
布尔值(Boolean) :
true
或false
。 -
数字(Number) :包括整数和浮点数,如
10
,3.14
。 -
字符串(String) :一串字符,如
"hello"
。 -
空值(Null) :表示无值,
null
。 -
未定义(Undefined) :表示声明了但没有赋值的变量,
undefined
。 -
符号(Symbol) :唯一的、不可变的数据类型,如
Symbol("id")
。
-
-
复合数据类型 :
-
数组(Array) :元素类型为数组中元素的类型,如
number[]
表示数组中都是数字。 -
元组(Tuple) :固定长度的数组,元素类型可以不同,如
[number, string]
。 -
枚举(Enum) :一组命名的整数常量,如
enum Color {Red, Green, Blue}
。 -
联合类型(Union Type) :可以赋值为多种类型中的任意一种,如
string | number
。 -
交叉类型(Intersection Type) :可以赋值为多种类型中的所有类型,如
string & number
。 -
类(Class) :具有属性和方法的类型定义。(常用)
-
接口(Interface) :描述对象或函数的形状,可以用来定义对象或函数的类型。(常用)
-
-
泛型(Generics) :
-
允许在定义函数、接口、类的时候使用泛型类型,以便在之后的使用中再指定具体的类型,如
function <T> (x: T): T {}
。
-
-
字面量类型 :
-
指定类型为特定的字面量值,如
"success" | "error"
。
-
二、值类型和引用类型的区别?
1、值类型和引用类型是什么?
ArkTS中数据分为值类型(基本数据类型)和引用类型(复杂数据类型)
2、区别
1、存储位置不一样 值类型的会保存在栈内存中 引用类型的变量名(地址)会存在栈内存中,但是值会存储在堆内存中
2、赋值方式不一样 值类型的直接赋值,赋的值本身 引用类型赋值,赋的是地址(影响=>修改值会相互影响=>解决:浅拷贝或深拷贝)
三、静态类型(ts/arkts)和动态类型(js)有什么区别?
● 静态类型是在编译期间进行类型检查,可以在编辑器或 IDE 中发现大部分类型错误。
● 动态类型是在运行时才确定变量的类型,通常与动态语言相关联。
静态类型(Static Typing)
● 定义:静态类型是指在编译阶段进行类型检查的类型系统,通过类型注解或推断来确定变量、参数和返回值的类型。
●特点:静态类型能够在编码阶段就发现大部分类型错误,提供了更好的代码健壮性和可维护性。 ●优势:可以在编辑器或 IDE 中实现代码提示、自动补全和类型检查,帮助开发者减少错误并提高代码质量。
动态类型(Dynamic Typing)
●定义:动态类型是指在运行时才确定变量的类型,通常与动态语言相关联,允许同一个变量在不同时间引用不同类型的值。
●特点:动态类型使得变量的类型灵活多变,在运行时可以根据上下文或条件动态地改变变量的类型。
●优势:动态类型可以带来更大的灵活性,适用于一些需要频繁变化类型的场景。
区别总结
●时机差异:静态类型在编译期间进行类型检查,而动态类型是在运行时才确定变量的类型。
●代码稳定性:静态类型有助于在编码阶段发现大部分类型错误,提高代码稳定性;动态类型对类型的要求较为灵活,但可能增加了代码的不确定性。
●使用场景:静态类型适合于大型项目和团队,能够提供更强的类型安全性;动态类型适用于快速原型开发和灵活多变的场景,能够更快地迭代和测试代码。
四、鸿蒙项目中用到arkTs哪些技术
-
布局
布局是UI的必要元素,它定义了组件在界面中的位置。ArkUI框架提供了多种布局方式,除了基础的线性布局、层叠布局、弹性布局、相对布局、栅格布局外,也提供了相对复杂的列表、宫格、轮播。
-
组件
组件是UI的必要元素,形成了在界面中的样子,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。系统内置组件包括按钮、单选框、进度条、文本等。开发者可以通过链式调用的方式设置系统内置组件的渲染效果。开发者可以将系统内置组件组合为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用,具有更强的工程性。
-
页面路由和组件导航
应用可能包含多个页面,可通过页面路由实现页面间的跳转。一个页面内可能存在组件间的导航如典型的分栏,可通过导航组件实现组件间的导航。
-
图形
方舟开发框架提供了多种类型图片的显示能力和多种自定义绘制的能力,以满足开发者的自定义绘图需求,支持绘制形状、填充颜色、绘制文本、变形与裁剪、嵌入图片等。
-
动画
动画是UI的重要元素之一。优秀的动画设计能够极大地提升用户体验,框架提供了丰富的动画能力,除了组件内置动画效果外,还包括属性动画、显式动画、自定义转场动画以及动画API等,开发者可以通过封装的物理模型或者调用动画能力API来实现自定义动画轨迹。
-
交互事件
交互事件是UI和用户交互的必要元素。方舟开发框架提供了多种交互事件,除了触摸事件、鼠标事件、键盘按键事件、焦点事件等通用事件外,还包括基于通用事件进行进一步识别的手势事件。手势事件有单一手势如点击手势、长按手势、拖动手势、捏合手势、旋转手势、滑动手势,以及通过单一手势事件进行组合的组合手势事件。
在接下去的项目相关的分享中会再提到ArkTS的语法以及具体使用规范。