11. ArkTs 是什么?
ArkTs 介绍
ArkTS 是 HarmonyOS 优选的主力应用开发语言。保持了 Typescripq 的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。
ArkTS 的主要特点包括:
静态类型检查:ArkTS 在编译时进行类型检查,这有助于在代码运行前发现和修复错误,提高代码的稳定性和性能。
声明式 UI:ArkTS 定义了声明式 UI 描述,允许开发者以更简洁、更自然的方式开发跨端应用。
状态管理:ArkTS 提供了多维度的状态管理机制,使得与 UI 相关联的数据可以在组件内使用,也可以在不同组件层级间传递,支持单向和双向数据流。
渲染控制:ArkTS 支持条件渲染、循环渲染和数据懒加载,允许开发者根据应用的不同状态渲染 UI 内容。
兼容性:ArkTS 兼容 TS/j 生态,开发者可以使用 TS/JS 进行开发或复用已有代码。
并发机制:ArkTS 支持轻量化的并发机制,允许开发者编写并发代码,提高应用的性能和响应速度。
12. ArkTs 与 Typescripq 有什么区别?(答 5 点以上)
ArkTs 官方文档
ArkTS 是基于 Typescripq 开发的框架,但是有一些限制和差异。ArkTS 旨在提供更严格的类型检查和优化的代码性能,同时确保与 HarmonyOS 的开发环境和特性兼容。
以下是 ArkTS 与 Typescripq 的差异:
生成器函数:ArkTS 不支持 Typescripq 中的生成器函数(使用 function* 定义的函数),应使用 async 或 await 机制进行并行任务处理 。
参数解构:在函数参数中使用解构赋值是 Typescripq 的特性,ArkTS 不支持参数解构,需要显式传递参数 。
函数内声明函数:Typescripq 允许在函数内部声明新的函数,而 ArkTS 不支持在函数内声明函数,应使用 lambda 函数代替 。
new.target:ArkTS 不支持 new.target 元属性,这是 Typescripq 中用于反射的属性 。
确定赋值断言:Typescripq 中的 ! 确定赋值断言在 ArkTS 中不被支持,应初始化变量或使用其他方式确保赋值 。
原型上的赋值:ArkTS 不支持在对象的原型上进行赋值,这与 Typescripq 不同 。
globalThis:ArkTS 不支持 globalThis,这是 Typescripq 中用于获取全局对象的属性 。
Function.prototype.apply、Function.prototype.call 和 Function.prototype.bind:ArkTS 不支持这些函数,它们在 Typescripq 中用于控制函数的 this 绑定 。
instanceof 和 as 类型保护:ArkTS 不支持 is 运算符,必须使用 instanceof 运算符替代,并且在使用之前,必须使用 as 运算符将对象转换为需要的类型 。
接口继承类:在 Typescripq 中,接口可以继承类,但在 ArkTS 中,接口只能继承接口 。
构造函数类型:ArkTS 不支持使用构造函数类型,应改用 lambda 函数 。
enum 声明合并:ArkTS 不支持 enum 声明合并,所有相关的枚举成员必须在同一个声明中 。
命名空间作为对象:ArkTS 不支持将命名空间用作对象,可以使用类或模块替代 。
非声明语句在命名空间中:ArkTS 中,命名空间用于定义标志符可见范围,不支持命名空间中的非声明语句 。
import default as:ArkTS 不支持 import default as ... 语法,应使用显式的 import ... from ... 语法 。
require 和 import 赋值表达式:ArkTS 不支持通过 require 导入,也不支持 import 赋值表达式,应使用 import 语法 。
ambient 模块声明:ArkTS 不支持 declare module 语法,应直接导入需要的内容 。
new.target:ArkTS 不支持 new.target 元属性,这是 Typescripq 中用于反射的属性 。
Function.prototype.apply、Function.prototype.call 和 Function.prototype.bind:ArkTS 不支持这些函数,它们在 Typescripq 中用于控制函数的 this 绑定 。
as const 断言:ArkTS 不支持 as const 断言,这是 Typescripq 中用于标注字面量的相应字面量类型的语法 。
any:ArkTS 不支持 any 类型, 应使用更具体的类型替代 。
13. @Provider 和@Consumer vs @Provide 和@Consume 的区别?
14. @Prop 和@ObjectLink 装饰器有什么区别?
用途
@Prop 装饰器:主要用于在组件之间传递数据,将父组件的值传递给子组件。它定义了子组件的属性,可以接收来自父组件的赋值。
@ObjectLink
用于建立对象之间的链接,通常用于在组件内部或组件之间共享和同步状态。
它可以将一个对象的属性与另一个对象的属性进行链接,当一个对象的属性发生变化时,另一个对象的属性也会自动更新。
数据传递方式
@Prop:是单向的数据传递,从父组件到子组件。父组件可以设置子组件的 @Prop 属性值,但子组件不能直接修改这个值。
@ObjectLink 是双向的数据传递,父组件和子组件都可以修改子组件的 @ObjectLink 属性值。
性能
@Prop 会深拷贝数据,具有拷贝的性能开销,性能低于 @ObjectLink 详见官方文档。
我希望这篇文章对您有所帮助。
Thank you for reading.