前言

学习HarmonyOS NEXT时,你一定绕不开一个词:

ArkTS

很多开发者第一次接触时都会有疑问:

  • ArkTS是什么?
  • 它和TypeScript有什么关系?
  • 为什么鸿蒙不用Java和Kotlin?
  • 学会ArkTS就能开发鸿蒙应用吗?

事实上,在HarmonyOS NEXT中:

ArkTS = HarmonyOS NEXT开发的基础语言

如果说:


Android = Kotlin
iOS = Swift

那么:


HarmonyOS NEXT = ArkTS

今天我们就来彻底搞懂ArkTS。


一、ArkTS是什么?

ArkTS全称:


Ark TypeScript

它是华为基于TypeScript扩展出来的一门开发语言。

官方目标:


提升运行效率
提升开发效率
增强类型安全
适配鸿蒙生态

简单理解:


TypeScript
+
鸿蒙扩展能力
+
ArkUI支持
=
ArkTS

因此:

学习过前端的同学会发现很多语法非常熟悉。


二、为什么鸿蒙不用Java?

很多Android开发者都有这个疑问。

为什么不用:


Java
Kotlin

而要重新设计ArkTS?

原因主要有三个。


原因一:统一生态

鸿蒙面向:

  • 手机
  • 平板
  • 手表
  • 车机
  • 智慧屏
  • IoT设备

如果继续使用Java体系:


Java
+
Android Framework

会受到很多历史包袱限制。

ArkTS更容易统一多端开发。


原因二:性能更高

传统Java:


Java
↓
字节码
↓
JVM
↓
执行

ArkTS:


ArkTS
↓
Ark Compiler
↓
机器码
↓
执行

减少运行时开销。


原因三:降低学习成本

目前前端开发者数量庞大。

而ArkTS与TypeScript高度相似:


let name:string="Tom"

几乎没有学习门槛。


三、ArkTS和TypeScript有什么区别?

很多文章都说:

ArkTS就是TypeScript。

这其实并不准确。

更准确地说:


ArkTS ⊃ TypeScript

ArkTS兼容大量TypeScript语法。

同时增加了:

  • 装饰器
  • 状态管理
  • UI描述能力
  • 鸿蒙系统能力

TypeScript代码


class User {
  name:string

  constructor(name:string){
      this.name=name
  }
}

ArkTS代码


@Entry
@Component
struct Index {

  build() {
    Column() {
      Text("Hello HarmonyOS")
    }
  }
}

这里:


@Entry
@Component

就是鸿蒙扩展能力。


四、ArkTS基础语法

对于Java开发者来说:

大约70%的语法一天内就能掌握。


变量定义


let name:string="HarmonyOS"

const version:number=5

数据类型


string
number
boolean

示例:


let age:number=18

let flag:boolean=true

数组


let nums:number[]=[1,2,3,4]

遍历:


for(let item of nums){
    console.info(item)
}

对象


let user={
    name:"Tom",
    age:18
}

访问:


console.info(user.name)

五、ArkTS中的类

与Java非常相似。


定义类


class Student{

  name:string

  constructor(name:string){
      this.name=name
  }

  study(){
      console.info("学习中")
  }
}

创建对象


let stu=new Student("张三")

stu.study()

继承


class Person{
  run(){}
}

class Student extends Person{
}

和Java几乎一样。


六、ArkTS最重要的特性——装饰器

这是鸿蒙开发必须掌握的内容。


什么是装饰器?

例如:


@State

@Component

@Entry

这些就是装饰器。

作用:


增强对象能力

@Entry

表示:


应用入口页面

例如:


@Entry
@Component
struct Index{
}

@Component

表示:


这是一个组件

类似:


React Component

@State

表示:


状态变量

例如:


@State count:number=0

七、为什么@State这么重要?

这是鸿蒙响应式开发核心。


传统写法:


textView.setText("10")

ArkTS:


@State count:number=0

Text(`${this.count}`)

修改:


this.count++

页面自动刷新。


整个过程:


修改数据
↓
自动通知UI
↓
界面更新

开发效率极高。


八、第一个ArkTS程序

完整示例:


@Entry
@Component
struct Index {

  @State message:string="Hello HarmonyOS"

  build() {
    Column() {

      Text(this.message)
        .fontSize(30)

      Button("点击我")
        .onClick(()=>{
          this.message="ArkTS真香"
        })

    }
    .width('100%')
    .height('100%')
  }
}

效果:


Hello HarmonyOS

[点击我]

点击后:


ArkTS真香

[点击我]

无需刷新页面。


九、ArkTS开发需要掌握哪些知识?

建议按照下面路线学习。


第一阶段

基础语法

学习:


变量
函数
数组
对象
类
继承
接口
泛型

时间:


3天

第二阶段

装饰器

学习:


@Entry
@Component
@State
@Prop
@Link

时间:


3天

第三阶段

ArkUI

学习:


Text
Button
Image
List
Grid
Tabs

时间:


1周

第四阶段

项目实战

推荐:


TodoList
记账本
新闻App
商城首页

时间:


2周

十、ArkTS未来值得学吗?

答案很明确:

值得。

原因有三:


鸿蒙生态快速发展

原生鸿蒙应用数量持续增长。


企业招聘需求增加

越来越多企业开始招聘:


HarmonyOS开发工程师

技术门槛尚未饱和

相比:


Java
Android

鸿蒙开发者数量仍然较少。

对于大学生和转型开发者来说是一个机会窗口。


总结

ArkTS并不是一门完全陌生的新语言。

它本质上是:


TypeScript
+
鸿蒙扩展
+
声明式UI能力

对于:

  • Android开发者
  • 前端开发者
  • Java开发者
  • 在校学生

来说,都具备较低的学习门槛。

如果说:


ArkUI决定界面长什么样

那么:


ArkTS决定应用如何运行

掌握ArkTS,是进入HarmonyOS NEXT开发世界的第一步。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐