软件(ide)下载:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者
学习路径:HarmonyOS第一课|应用开发视频教程学习|HarmonyOS应用开发官网
文档网站:文档中心
实战案例:HarmonyOS系统Codelabs技术指导_华为HarmonyOS源代码 - HarmonyOS应用开发官网
0.TS的基本语法
变量声明
TS在JS的基础上加入了静态类型检查功能,因此每一个变量都有固定的数据类型
let msg: string --> 关键字 变量名 变量的数据类型
let msg: string = 'hello world' -->完整的一个变量声明
变量的数据类型
string :字符串
number :数字
boolean :布尔
any(不确定) :可以是任意类型
union :联合类型
可以指定多个类型中的一个 eg. let u: string|number|boolean = 'rose'
object 对象
let p = {name: 'jack',age : 21} console.log(p.name):向控制台输出日志p.name console.log(p['name'])
Array:数组
let names: Array<string> = ['ja ck' , 'Rose'] let ages: number[] = [21,18] console.log(name[0])
条件控制
与大多语言类似,支持基于if-else和switch的条件控制 TS中只有空字符串,数字0和null都被认定为false,其他的都是true
循环迭代
TS中支持for和while循环,并且因为以下内置类型如Array提供了快捷迭代语法
Array的for--in迭代器,遍历得到的数组的角标
let names: Array<string> = ['jack' , 'Rose']
for(const i in names){
console.log(i + ':' + names[i])
}
for--of迭代器,直接得到元素
let names: Array<string> = ['jack' , 'Rose']
for(const name of names){
console.log(name)//可以直接得到name的元素
}
基础语法
函数
TS通常利用function关键字声明函数,并且支持可选参数。默认参数,箭头函数等特殊语法。
// 无返回值函数,返回值void可以省略
function sayHello(name: string): void{ console.log('你好' + name + '!') } //使用方法 sayHello('Jack')
//有返回值函数 function sum(x: number,y: number): void{ return x + y; } let result = sum(21,18) console.log('21 + 18 = ' + result)
//箭头函数 let sayHi = (name: string) =>{ console.log('你好,' + name + '!') } sayHi('Rose')
//可选参数,在参数名后加?,表示该参数是可选的 function sayHello(name?: string){ 判断 name = name ? name : '陌生人' console.log('你好,' + name +'!') } sayHello('Jack') sayHello()
//参数默认值,在参数后面赋值,表示参数默认值 //如果调用者没有传参,测使用默认值 function sayHello(name: string = '陌生人'){ console.log('你好,' + name +'!') } sayHello('Jack') sayHello()
类和接口:
//定义枚举 enum Msg{ HI = 'Hi', HELLO = 'Hello' }
//定义接口 interface A{ say(msg: Msg):void }
//实现接口 class B implements A{ say(msg: Msg): void{ console.log(msg + ', I am B') } }
//初始化对象 let a:A = new B()
//调用方法 a.say(Msg.HI)
模块开发
我们可以把通用功能抽取到单独的ts文件中,每一个文件都是一个模块(moudle)。
模块可以相互加载,提高代码的复用性。
//用exportl导出
export class Rectangle{
public width: number
public length: number
constructor(width: number,length: number){
this.width = width
this.length = length
}
}
export function area(rec: Rectangle): number{
return rec.width *rec.length
}
//使用方法
//通过import语法导入,from后面写文件的地址
import {Rectangle, area} from '../rectangle'
let r = new Rectangle(10,20)
console.log('面积为: ' + area(r))