在介绍ArkTS之前我们先来介绍一下他前面在搭桥铺路的两位先烈——JavaScript和TypeScript。

首先,JavaScript被广泛使用在Web和前端应用开发,是一门动态语言,具有语言简洁灵活,易学易上手的特点,因此他被广大开发者所喜爱。

但是,在语言界,不难学,不学穿你肠子的语言,不是一门好语言,不信,你看,至今地位无可撼动的C语言,还有最近横空出世的Rust,都是以难学而著称的,多少人至今依然卡在入门这一步,真正实现了从入门到放弃的语言自由。

JavaScript好学的原因之一在于他是不需要进行变量类型检查的。但是不用进行检查这就会出现很大的问题,就像你做一个厨师,数据就是你的食材,碗就是你的变量,在一般情况下,比如没有监管部门或者顾客到厨房进行突击检查的时候,同一个碗你爱用来干啥都行。这样一般不会出问题,但是一旦出了问题那就是大问题,事后补救都补救不了的那种。

问题就出在事后补锅就有牢骚可发了,试问,你怎么可以用一个装完沙子的碗去装饭盛给顾客吃呢。顾客不发现这个事则罢,一旦发现,老板的生意就要永久性打烊了。

小作坊瞎搞搞没关系,生意搞大了那是要看重声誉的,要引入监督机制进行管理,进行全局把控,进行事前检查,确保不会出事,于是更标准化的TypeScript出来把这活揽了,他引入了静态类型检查,本来要装潲水的碗,现在用来装饭,是会受到警告处分的。以前JavaScript赋值为string类型的变量后面再继续赋值数值类型的是可以的,到了TypeScript这就要抛异常了。

所以,TypeScript也是比JavaScript更适合于需要大型团队化协作的一门语言,但与JavaScript相比,TypeScript也失之于灵巧。

而到了专门为鸿蒙开发而生的ArkTS这里,他综合考量了TypeScript和JavaScript两者的特点,他提出了属于自己的一套理念。

ArkTS继承自TypeScript,但比TypeScript有着更强的类型检查与约束,毕竟他是要单开一个生态体系的,是要做大事的,不能有JavaScript那样的马虎眼。他专门作出了各种高性能优化和设计。他也顺应移动开发的潮流提供了声明式UI范式。

ArkTS继承自TypeScript并超越了TypeScript,并同时兼容了TypeScript和JavaScript两位老前辈,尽显王者风范。

ArkTS提供了具有更强并发能力的API,使得并发性能大大优于TypeScript和JavaScript。

ArkTS摈弃了影响运行时性能的设计,尽量用显示类型定义和类型推断代替。

ArkTS的声明式UI是这样的:

#HarmonyOS NEXT体验官#鸿蒙开发方舟语言ArkTS初体验_ArkTS

声明式UI的UI描述提供各种装饰器、自定义组件和UI描述机制。状态管理提供数据驱动UI的机制。

ArkTS通过关键字let声明变量,通过const声明常量。

ArkTS的基本类型有string、number、boolean、enum,引用类型有Array、自定义类,联合类型有Union。

ArkTS具有空安全机制,如下代码会导致null错误:

let name: string | null = null
console.log(name.length.toString()) 

ArkTS的空安全可作如下三种代码处理:

if(name != null){...}    //常规的if-else判断
const unwrapper = name ??  ""  // ??左边为空时返回右边的值
let len = name?.length  // 如果name为null返回undifined

ArkTS的函数声明如下:

function 函数名(参数1:参数类型1):返回类型{函数体}

ArkTS也提供lambda函数表达式进行优雅的函数声明调用:

(参数1:参数类型1):返回类型=>{函数体}

ArkTS也支持面向对象编程,支持自定义类以及在类里声明类的属性和方法。

const person:Person={
	public name:"gouzi"
  private _age:10
  get age():number{函数体}
  set age(age:number){函数体}
}

ArkTS的面向对象同样也支持继承、方法重写与多态。

ArkTS中文件内的作用域是独立的,支持导出文件中的变量、函数、类等,仅需在前面加上修饰符export,使用时在使用的文件头部加上import关键字把要引入的相关内容引入即可。

导出:

export class Person{
	name:string = "huawei"
  age:number=20
  // 构造函数
  constructor(
  	name:string, age:number
  ){
  	this.name = name
    this.age = age
  }
}

引入:

import {Person} from './Person'
const person = new Person("gouzi", 18)

好了,ArkTS的基础内容介绍完了。