ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,需要先了解一下TS语言的基础知识。
一、基础类型
1. 数字类型-number
双精度 64 位浮点值。它可以用来表示整数和分数
let decLiteral: number = 6; |
2. 字符串类型-string
一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。
let name: string = "Runoob"; | |
let words: string = 您好,今年是 ${ name } 发布 ${ years + 1} 周年; |
3. 布尔类型-boolean
表示逻辑值:true 和 false。
let flag: boolean = true; |
4. 枚举-enum
枚举类型用于定义数值集合。
enum Color {Red, Green, Blue}; | |
let c: Color = Color.Blue; |
5. 数组
let arr: number[] = [1, 2]; // 在元素类型后面加上[] | |
let arr: Array<number> = [1, 2]; // 使用数组泛型 |
6. 元组
元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x: [string, number]; | |
x = ['Runoob', 1]; |
7. 特殊类型-any、null、undefined
Any
任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,变量的值会动态改变时使用
let x: any = 1; // 数字类型 | |
x = 'I am who I am'; // 字符串类型 | |
x = false; // 布尔类型 |
null
null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。
var person = null; // 值为 null(空), 但类型为object |
undefined
undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。
var person; // 值为 undefined, 类型是undefined | |
var person = undefined; // 值为 undefined, 类型为 undefined |
undefined 和 null 的区别
null 和 undefined 的值相等,但类型不等:
typeof undefined // undefined | |
typeof null // object | |
null === undefined // false (类型不等) | |
null == undefined // true (值相等) |
二、变量
var [变量名] : [类型] = 值;
var uname = "Runoob"; | |
let password = "123456"; |
三、常量
const PI = 3.141592653589793; |
四、流程控制语句
// if | |
var num:number = 2 | |
if(num > 0) { | |
console.log(num+" 是正数") | |
} else if(num < 0) { | |
console.log(num+" 是负数") | |
} else { | |
console.log(num+" 不是正数也不是负数") | |
} | |
// switch | |
var grade:string = "A"; | |
switch(grade) { | |
case "A": { | |
console.log("优"); | |
break; | |
} | |
case "B": { | |
console.log("良"); | |
break; | |
} | |
case "C": { | |
console.log("及格"); | |
break; | |
} | |
case "D": { | |
console.log("不及格"); | |
break; | |
} | |
default: { | |
console.log("非法输入"); | |
break; | |
} | |
} | |
// for | |
var num:number = 5; | |
var i:number; | |
var factorial = 1; | |
for(i = num;i>=1;i--) { | |
factorial *= i; | |
} | |
// for in | |
var j:any; | |
var n:any = "a b c"; | |
for(j in n) { | |
console.log(n[j]); | |
} | |
// for of | |
let someArray = [1, "string", false]; | |
for (let entry of someArray) { | |
console.log(entry); // 1, "string", false | |
} | |
// forEach | |
let list = [4, 5, 6]; | |
list.forEach((val, idx, array) => { | |
// val: 当前值 | |
// idx:当前index | |
// array: Array | |
}); | |
// every | |
let list = [4, 5, 6]; | |
list.every((val, idx, array) => { | |
// val: 当前值 | |
// idx:当前index | |
// array: Array | |
return true; // Continues | |
// Return false will quit the iteration | |
}); | |
// while | |
var num:number = 5; | |
var factorial:number = 1; | |
while(num >=1) { | |
factorial = factorial * num; | |
num--; | |
} | |
// do while | |
var n:number = 10; | |
do { | |
console.log(n); | |
n--; | |
} while(n>=0); |
在循环语句中支持break
和continue
关键字,跳出或继续循环
五、函数
语法格式:
// 默认 | |
function function_name(){} | |
// 带返回值,:后的T为返回值类型 | |
function function_name(): T{} | |
// 带参函数,支持默认值 | |
function function_name(param1[:type],param2[:type] = default_value) {} | |
// 带剩余参数,函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组 | |
function buildName(firstName: string, ...restOfName: string[]) { | |
return firstName + " " + restOfName.join(" "); | |
} | |
// 匿名函数 | |
var res = function( [arguments] ) { ... } | |
// 构造函数 | |
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody) | |
// Lambda 函数 | |
( [param1, param2,…param n] )=>statement; |
六、类( Class )
语法格式:
class class_name { | |
// 类作用域 | |
} |
普通
示例:
class Car { | |
// 字段 | |
engine:string; | |
// 构造函数 | |
constructor(engine:string) { | |
this.engine = engine | |
} | |
// 方法 | |
disp():void { | |
console.log("发动机为 : "+this.engine) | |
} | |
} | |
var obj = new Car("Engine 1") | |
obj.field_name // 访问属性 | |
obj.function_name() // 访问方法 |
继承
使用extends作为关键字:
class Shape { | |
Area:number | |
constructor(a:number) { | |
this.Area = a | |
} | |
test() {} | |
} | |
class Circle extends Shape { | |
disp():void { | |
console.log("圆的面积: "+this.Area) | |
} | |
test() { | |
super.test() // 重写父类方法 | |
} | |
} | |
var obj = new Circle(223); | |
obj.disp(); | |
obj.test; |
七、接口
语法定义:
interface interface_name { | |
} |
普通
interface IPerson { | |
firstName:string, | |
lastName:string, | |
sayHi: ()=>string | |
} | |
var customer:IPerson = { | |
firstName:"Tom", | |
lastName:"Hanks", | |
sayHi: ():string =>{return "Hi there"} | |
} |
接口继承
接口可以通过关键字extends来继承其他接口以扩展自己。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
]
[外链图片转存中…(img-2stXIZe7-1712921873860)]
[外链图片转存中…(img-f58iRQSW-1712921873860)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-Cgmvm83K-1712921873860)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!