59 ArkTS 与TS区别

ArkTS 是基于 TypeScript 开发的框架,但是有一些限制和差异。ArkTS 旨在提供更严格的类型检查和优化的代码性能,同时确保与 HarmonyOS 的开发环境和特性兼容。

以下是 ArkTS 与 TypeScript 的差异:

不支持使用对象字面量声明类型。
不支持使用 var关键字。
不支持使用 in运算符。
不支持导入断言。
不支持使用 any类型。
不支持使用 import赋值表达式。
不支持使用 require导入

具体区别:

生成器函数:ArkTS 不支持 TypeScript 中的生成器函数(使用 function* 定义的函数),应使用 async 或 await 机制进行并行任务处理 。
参数解构:在函数参数中使用解构赋值是 TypeScript 的特性,ArkTS 不支持参数解构,需要显式传递参数 。
函数内声明函数:TypeScript 允许在函数内部声明新的函数,而 ArkTS 不支持在函数内声明函数,应使用 lambda 函数代替 。
new.target:ArkTS 不支持 new.target 元属性,这是 TypeScript 中用于反射的属性 。
确定赋值断言:TypeScript 中的 ! 确定赋值断言在 ArkTS 中不被支持,应初始化变量或使用其他方式确保赋值 。
原型上的赋值:ArkTS 不支持在对象的原型上进行赋值,这与 TypeScript 不同 。
globalThis:ArkTS 不支持 globalThis,这是 TypeScript 中用于获取全局对象的属性 。
Function.prototype.apply、Function.prototype.call 和 Function.prototype.bind:ArkTS 不支持这些函数,它们在 TypeScript 中用于控制函数的 this 绑定 。
instanceof 和 as 类型保护:ArkTS 不支持 is 运算符,必须使用 instanceof 运算符替代,并且在使用之前,必须使用 as 运算符将对象转换为需要的类型 。
接口继承类:在 TypeScript 中,接口可以继承类,但在 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 元属性,这是 TypeScript 中用于反射的属性 。
Function.prototype.apply、Function.prototype.call 和 Function.prototype.bind:ArkTS 不支持这些函数,它们在 TypeScript 中用于控制函数的 this 绑定 。
as const 断言:ArkTS 不支持 as const 断言,这是 TypeScript 中用于标注字面量的相应字面量类型的语法 。
any:ArkTS 不支持any类型, 应使用更具体的类型替代 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值