HarmonyOS鸿蒙开发 ArkTS基础语法
前言
ArkTS是鸿蒙官方推荐的编程语言,这是在TypeScript语法基础上优化而来的,可以提供更高的性能和开发效率。ArkTS对TypeScript的动态类型特性施加了更严格的限制,以减少运行时开销,提高执行效率。通过取消动态类型特性,ArkTS代码能更有效地被运行前编译和优化,从而实现更快的应用启动和更低的功耗。这也是移动端开发的大趋势。
而TypeScript是在JavaScript基础上通过添加类型定义扩展而来的,所以ArkTS与JavaScript是互通的,鸿蒙开发者可以重用TypeScript和JavaScript代码和库。
HarmonyOS从API8开始不再支持Java作为开发语言,而ArkTS作为官方主推的编程语言,是每个鸿蒙开发者都无法避开的。
今年10月8号HarmonyOS NEXT正式公测,这被称为“纯血版鸿蒙”,抛弃了Linux内核及安卓开放源代码项目(AOSP)等代码,仅支持鸿蒙内核和鸿蒙系统的应用,不再兼容安卓应用。
一、ArkTS怎么学
对于做前端开发的同学来讲ArkTS是很容易入门的,ArkTS是在TypeScript基础上优化而来的,而TypeScript又是在JavaScript基础上通过添加类型定义扩展而来的,那么有JavaScript和TypeScript基础的同学上手就很容易了,简单看一下ArkTS语法就能进行开发。需要注意的是,ArkTS提供对方舟开发框架ArkUI的声明式语法和其他特性的支持,这部分特性不在TypeScript的范围里,所以需要专门学习一下ArkUI知识。
对于Android开发老玩家来说,基本是Java入门的,那就要认真学习一下ArkTS语法了。一般Android开发也会接触过Dart和Kotlin语言,其实编程语言这些东西很多是相通的,看看ArkTS的语法基本也就能入门了。
本文就从一个Java开发者的角度记录一下我认为需要注意的语法点。
二、基础语法
1.对象字面量
ArkTS的对象字面量是用花括号包起来的“名、值”对列表,对象字面量作为一个表达式可以用于创建类实例并提供初始值,可以代替new表达式。
class C {
n: number = 0
s: string = ''
}
let c: C = {n: 42, s: 'foo'};
对象字面量还可以作为变量、参数、返回类型来使用
class C {
n: number = 0
s: string = ''
}
function foo(c: C) {}
let c: C
c = {n: 42, s: 'foo'}; // 使用变量的类型
foo({n: 42, s: 'foo'}); // 使用参数的类型
function bar(): C {
return {n: 42, s: 'foo'}; // 使用返回类型
}
也可以在数组元素类型或类字段类型中使用:
class C {
n: number = 0
s: string = ''
}
let cc: C[] = [{n: 1, s: 'a'}, {n: 2, s: 'b'}];
Record类型的对象字面量
ArkTS的Record类型跟Java的Map类似,是名值对的映射
let map: Record<string, number> = {
'John': 25,
'Mary': 21,
}
map['John']; // 25
2.空安全
默认情况下,ArkTS中的所有类型都是不可为空的,也就是不能给类型赋空值
比如下面这样是错的:
let x: number = null; // 编译时错误
let y: string = null; // 编译时错误
let z: number[] = null; // 编译时错误
但是ArkTS有个联合类型,将变量定义为联合类型T | null就可以赋空值了
let x: number | null = null;
x = 1; // ok
x = null; // ok
if (x != null) { /* do something */ }
是不是很神奇?
ArkTS还有非空断言运算符 !、空值合并运算符 ??,这些定义跟Kotlin差不多。
非空断言运算符:后缀运算符!可用于断言其操作数为非空。
class A {
value: number = 0;
}
function foo(a: A | null) {
a.value; // 编译时错误:无法访问可空值的属性
a!.value; // 编译通过,如果运行时a的值非空,可以访问到a的属性;如果运行时a的值为空,则发生运行时异常
}
空值合并二元运算符??:用于检查左侧表达式的求值是否等于null或者undefined。如果是,则表达式的结果为右侧表达式;否则,结果为左侧表达式。
总结
今天学习了ArkTS的基础语法,我摘录了对于Java开发者来说可能需要注意的对象字面量和空安全两个知识点,其余的内容比较容易掌握,就不在这里赘述了,没接触过的同学可以去HarmonyOS开发官网浏览一下。
更多推荐
所有评论(0)