前言
学习HarmonyOS也有一段时间了,发现了一些问题,也有一些体会,写在这里, 也是对自己近期的一个学习体会的总结。因为我之前是学Java的,没有安卓的相关开发经验,只有玩过一段时间的微信小程序,所以以下内容,如有错误,敬请指正。
吐槽
-
学习HarmonyOS最大的一个问题就是目前手头上没有合适的华为手机,借了一个Nova5Pro,结果当时不能升级到3.0系统,后面升级到了3.0系统之后,API版本还是6,导致一直都没有真机做测试,使用模拟器和预览器也勉强够用,不过学习过程中也有遇到一些Bug,后面再说
-
第二个问题就是HarmonyOS的版本跟API的版本,个人感觉有点混乱,因为你手上拿着一个设备,你是完全不知道它支持的API版本是多少,此处强烈建议华为的人想办法解决一下这个问题,有一个最简单的方式就是直接把API版本写在手机的开发者模式,这样进去就知道当前手机的API版本,这样不是比较简单吗?
-
感觉官方文档对于初学者来说并不是很友好,学习路线并不线性,官方文档表示,后期鸿蒙开发的主力肯定是ArkaTS+Storg模型,所以我选择直接先从API8入手,学习ArkTS,但是发现,对于ArkTS的学习,我个人之前只学过JS,对于TS的语法很多时候看到的时候一脸懵逼,但是官方文档对于这块内容好像默认你都会似的,也没写,只能自己去查,去摸索,增加了我的学习成本。
-
CodeLabs的形式非常好,有用的内容也不少,但是一开始,我随便打开一个CodeLabs也是一脸懵逼的,为什么这么多文件,为什么这么多引用,对于初学者而言,不是应该简单点好理解一些比较好吗,但是CodeLabs目前的形式,个人感觉有点吓到我,并且对于CodeLabs的引导,给我一种,“我们来学习,这是1,这是2,这是3,1+1=2,1+2=3,你学会了吗?好了现在我们来造航母吧!”我个人感觉非常难受。不知道其他人会不会跟我有同样感觉。
吐槽就先吐槽到这里,接下来对目前学习的一个内容进行一个总结。
知识总结
对于这块内容,我是站在一个新手的角度得出的内容,如有不对的内容,请指正
入门:
基础:
了解:
熟悉:
重要
- 完成快速入门的案例编写,以此体会创建项目、目录结构、配置文件及装饰器、组件等相关概念
- API8页面跳转案例
- API9页面跳转案例
TS通用语法
类型
变量声明
name:type = value
复制
联合类型
- 打个比方说image的src属性,传进去的参数可以是字符串也可以传一个资源路径,为什么可以这样呢?点进去看一下,他是这么写的:
src: string | PixelMap | Resource
复制
- 在类型定义的时候,是用了"|",意思是可以是这个类型,也可以是另一个类型
数组类型
- 最基础的很简单:
let numberArray: number[] = [1, 2, 3] // var numberArray = [1, 2, 3];
let numberArray1: Array<number> = [4, 5, 6] // var numberArray1 = [4, 5, 6];
复制
- 联合类型也可以用数组:
let arr: (string | number)[] = [1, 'a']
复制
- 复杂对象也可以用数组:
let arr: {name: string, age: number}[] = [
{name: 'Jane', age: 17},
{name: 'Jian', age: 20}
]
复制
元组
-
元组算是一个新东西,Python也有用到,本质上就是一个确定数量和类型的数组
-
类型和位置需要一一对应
let data: [number, string, boolean] = [2, '3', true] // var data = [2, '3', true];
复制
枚举
- 这个也是使用enum枚举关键字,可以为枚举项赋值,不赋值默认从0开始,赋值后,这个值就是该枚举中枚举项的下标
enum Direction {
Up = 1, // 不赋值默认从0开始
Down,
Left,
Right
}
console.log(Direction.Down) // 2
console.log(Direction[1]) // Up
复制
类型断言
- 逻辑类似于Java的类型强转,有两种实现方式
str as string
<string>str //这两种方式都是将变量str,强制变成string类型
复制
类型别名
- 使用type关键字可以给某一个Object对象起一个临时性的别名
type Lady = {name: string, age: number} // 对象类型可以使用类型别名
let arr: Lady[] = [
{name: 'Jan