ITPub博客

首页 > 架构设计 > 操作系统 > Dart 与 ArkTS 函数与类的对比学习:从 Flutter 到 HarmonyOS

Dart 与 ArkTS 函数与类的对比学习:从 Flutter 到 HarmonyOS

投稿 操作系统 作者:ITPUB鸿蒙小助手 时间:2025-12-24 11:07:20 0 删除 编辑

Dart 和 ArkTS 都是现代、响应式的语言,分别作为 Flutter 和 HarmonyOS 应用开发的核心。它们在语法上颇有相似之处(都受到 C++、Java、JavaScript/TypeScript 家族的影响),但在设计哲学和具体实现上又各有侧重。理解它们在函数和类上的差异,是高效进行跨平台学习的关键。

一、 函数对比

1. 基本函数定义

Dart : 类型注解是可选的,但推荐使用。返回值类型、参数类型都可以省略(此时为 dynamic)。

dart

ArkTS : 作为 TypeScript 的超集, 类型是强制的。这提供了更好的静态检查和开发体验。

typescript

2. 箭头函数 (Lambda/匿名函数)

Dart : 对于只有一个表达式的函数,可以使用箭头语法  => 。它隐含了  return 。

dart

ArkTS : 同样支持箭头函数,语法与 JavaScript/TS 一致。

typescript

3. 参数类型

可选参数与默认参数:

Dart : 提供了两种可选参数机制。

命名可选参数 : 使用  {}   包裹,调用时使用  paramName: value   的形式。

dart

位置可选参数 : 使用  []   包裹,按顺序传递。

dart

ArkTS : 语法更接近 TypeScript,使用  ?   标识可选参数,并可直接在参数列表中赋默认值。

typescript

4. 异步函数

Dart : 使用  async / await   关键字。异步函数返回  Future<T>   类型。

dart

ArkTS : 同样使用  async / await ,但返回类型是  Promise<T> 。

typescript

二、 类对比

1. 基本类定义与构造函数

Dart : 构造函数可以有多种形式。 this.   语法用于简化参数赋值。

dart

ArkTS : 使用  constructor   关键字定义构造函数。属性通常在构造函数参数中直接声明。

typescript

2. 继承

Dart : 使用  extends   继承,使用  super   调用父类构造函数和方法。

dart

ArkTS : 同样使用  extends   和  super 。

typescript

3. 访问控制符 (封装)

Dart : 没有  public ,  private ,  protected   关键字。默认都是公共的。以一个下划线  _   开头的标识符是 库私有的。

dart

ArkTS : 提供了标准的访问控制符,与 Java/C# 类似。

public ( 默认): 公有。

private: 私有,以 # 开头 或 使用 private 关键字(具体取决于TS配置,HarmonyOS推荐使用 private)。

protected: 受保护,子类和自身可访问。

typescript

4. 计算属性

Dart : 使用  get   关键字定义计算属性。

dart

ArkTS : 使用  get   关键字,语法略有不同。

typescript

 

三、 总结与核心差异表

学习建议:

从 Dart 到 ArkTS : 你需要重点适应 强制的类型注解、传统的 访问控制符以及 constructor 关键字。忘掉 Dart 的 _ 私有方式。

从 ArkTS 到 Dart : 你会感受到更 自由的语法(类型可选),并学习 Dart 特有的命名构造函数和 _ 私有规则。注意 Future 和 Promise 的转换。

希望这篇对比能帮助你在 Dart 和 ArkTS 的世界里自如切换,更好地驾驭 Flutter 和 HarmonyOS 应用开发!

https://developer.huawei.com/consumer/cn/training/classDetail/fd34ff9286174e848d34cde7f512ce22?type=1%3Fha_source%3Dhmosclass&ha_sourceId=89000248

(转载自CSDN,作者:大雷神)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70047792/viewspace-3106079/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-11-18

  • 博文量
    401
  • 访问量
    296692