ArkTs与TypeScript有什么区别?

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

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

具体区别:

  1. 生成器函数:ArkTS 不支持 TypeScript 中的生成器函数(使用 function* 定义的函数),应使用 asyncawait 机制进行并行任务处理 。
  2. 参数解构:在函数参数中使用解构赋值是 TypeScript 的特性,ArkTS 不支持参数解构,需要显式传递参数 。
  3. 函数内声明函数:TypeScript 允许在函数内部声明新的函数,而 ArkTS 不支持在函数内声明函数,应使用 lambda 函数代替 。
  4. new.target:ArkTS 不支持 new.target 元属性,这是 TypeScript 中用于反射的属性 。
  5. 确定赋值断言:TypeScript 中的 ! 确定赋值断言在 ArkTS 中不被支
### ArkTS中 `??` `?:` 的用法及区别ArkTS 中,`??` `?:` 是两种不同的操作符,分别用于处理空值合并条件判断。以下是它们的具体含义使用场景: #### 1. 空值合并操作符 (`??`) 空值合并操作符 `??` 用于返回其左侧表达式的值,如果该值为 `null` 或 `undefined`,则返回右侧表达式的值[^5]。 - **语法**: ```typescript leftExpression ?? rightExpression ``` - **特点**: - 只有当左侧表达式的值为 `null` 或 `undefined` 时,才会使用右侧表达式的值。 - 如果左侧表达式的值是其他“假值”(如 `0`、`false`、`""`),仍然会使用左侧的值。 - **示例代码**: ```typescript const value1 = null ?? "default"; // 输出: "default" const value2 = 0 ?? "default"; // 输出: 0 const value3 = false ?? "default"; // 输出: false const value4 = "" ?? "default"; // 输出: "" ``` #### 2. 条件操作符 (`?:`) 条件操作符 `?:` 是三元运算符,用于根据条件表达式的布尔值来选择两个表达式中的一个[^6]。 - **语法**: ```typescript condition ? trueExpression : falseExpression ``` - **特点**: - 根据条件表达式的布尔值决定返回哪个表达式的值。 - 条件为 `true` 时返回 `trueExpression`,否则返回 `falseExpression`。 - **示例代码**: ```typescript const age = 18; const status = age >= 18 ? "Adult" : "Minor"; // 输出: "Adult" const number = 0; const result = number > 0 ? "Positive" : "Non-positive"; // 输出: "Non-positive" ``` #### 区别总结 | 特性 | `??`(空值合并) | `?:`(条件操作符) | |--------------------|-------------------------|--------------------------| | 判断依据 | 是否为 `null` 或 `undefined` | 布尔值 | | 处理的“假值” | 不处理其他假值(如 `0`、`false`) | 处理所有假值 | | 返回值来源 | 左侧非空则返回左侧值 | 根据条件返回对应值 | --- ### 示例对比 ```typescript // 使用 ?? 操作符 const value1 = null ?? "default"; // 输出: "default" const value2 = 0 ?? "default"; // 输出: 0 // 使用 ?: 操作符 const value3 = null ? "non-null" : "default"; // 输出: "default" const value4 = 0 ? "non-zero" : "zero"; // 输出: "zero" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值