1、熟悉鸿蒙官网 安装DevEco Studio

设计:设计的资源,需要来找

开发:开发应用

分发:发布

文档:开发查看的资料(指南,API文档)

2、了解ArkTS语言

利用网页技术开发:

        CSS语言控制布局与样式

        HTML控制页面元素

        JS控制页面逻辑和数据状态

ArkTS = CSS+HTML+JS

ArkTS(声明式UI、状态管理……)基于TypeScript(静态类型定义),基于JS

声明式UI:需要什么就声明什么

3、TypeScript语法

(1)变量的声明

let msg: string = "hello world"

(let 代表变量(const 代表常量)、msg 代表名称、 string 数据变量的类型)

支持的变量类型:

//string:字符串,可以用单引号或双引号
let msg: string = 'hello world'
//number:数值,整数、浮点数都可以
let age: number = 21
// boolean:布尔
let finished: boolean = true
// any:不确定类型,可以是任意类型
let a: any = 'jack'
a = 21
//union:联合类型,可以是多个指定类型中的一种
let u: string| number | boolean = 'rose'
u = 18
//object:对象
let p = {name: 'Jack ', age: 21]
console.log(p.name)
console.log(p[ 'name '])
//Array:数组,元素可以是任意其它类型
let names: Array<string>= [ ' Jack' , 'Rose ']
let ages: number[] = [2r,18]
console.log(names[0])

(2)条件判断 

//定义数字
let num: number = 21

//判断是否是偶数
if(num%2 === 0)
{
    console.log(num+'是偶数')
}
else
{
    console.log(num+'是奇数')
}

//判断是否是正数
if(num >0 )
{
    console.log(num+'是正数')
}
else if (num < 0)
{
    console.log(num+'是负数')
}
else
{
    console.log(num+'为0')
}

//注意:在TupeScript中·空字符串·数字0、null、undefined都被认为是false,其它值则为true

let grade: string = 'A'
switch(grade)
{
    case 'A':{
        console.log('优秀')
        break
    }
    case 'B':{
        console.log('合格')
        break
    }
    case 'C':{
        console.log('不合格')
        break
    }
    default:{
        console.log('非法输入')
        break
    }
}

(3)循环语句

TypeScript支持for和while循环,并且为一些内置类型如Array等提供了快捷迭代语法。

//普通for
for(let i = l; i <= 10; i++){
    console.log('点赞'+i+'次')
}

// while
let i = 1;
while(i <= 10){
    console.log('点赞'+i+'次')
    i++;
}
//定义数组
let names: string[] = [ ' Jack ', 'Rose ']

// for in 迭代器,遍历得到数组角标
for (const i in names)
{
    console.log (i + ':' + names[i])
}

// for of 迭代器,直接得到元素
for (const name of names) 
{
    console.log(name)
}

(4)函数

TypeScript通常利用function关键字声明函数,并且支持可选参数、默认参数、箭头函数等特殊语法。

//无返回值函数,返回值void可以省略
function sayHello(name: string): void{
    console.log('你好,' + name + '!')
}
sayHello( 'Jack ')

//有返回值国数
function sum(x : number, y: number): number {
    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 ? name :'陌生人'
    console.log('你好,' + name + '!')
}
sayHello('Jack')
sayHello()
// 参数默认值,在传参后面赋值,表示参数默认值
// 如果调用者没有传参,则使用默认值
function sayHello(name: string ='陌生人')
{
    console.log('你好,' + name + '!')
}
sayHello('Jack')
sayHello()

(5)面向对象,类和接口

TypeScript具备面向对象编程的基本语法,例如interface、class、enum等。也具备封装、
继承、多态等面向对象基本特征。

//定义枚举 就类似于C语言的结构体
enum Msg{
    HI='Hi',
    HELLO = 'Hello'
}

//定义接口,抽象方法接收枚举参数 定义方法的声明
interface A {
    say (msg: Msg) :void    // 定义规则,方法
}

//实现接口 B实现了A接口 实现方法
class B implements A{
    say (msg: Msg): void {
        console.log(msg + ', I am B ')
    }
}

//初始化对象
let a:A=new B()
//调用方法,传递枚举参数
a.say(Msg.HI)
//定义矩形类
class Rectangle {
    //成员变量
    private width: number
    private length: number
    //构造函数
    constructor(width : number, length: number)
        this.width = width
        this.length = length
    }
    //成员方法
    public area() : number{
        return this.width * this.length
    }
}

//定义正方形
class Square extends Rectangle{
    constructor(side: number) {
        //调用父类构造
        super(side,side)
    }
}

let s = new Square(10)
console.log('正方形面积为:' + s.area()

 // 理解:将10这个数传进Square这个类里面,给这里面的构造方法side参数,side参数通过调用Square的父类Rectangle中的构造将其传给width,length参数。当对对象s调用方法,area方法时也就实现了面积的计算

(6)模块开发

应用复杂时,我们可以把通用功能抽取到单独的ts文件中,每个文件都是一个模块(module)。模块可以相互加载,提高代码复用性。

//定义矩形类,并通过export导出
export class Rectangle {
    //成员变量
    public width: number
    public length: number
    //构造函数
    constructor(width: number, length : number) {
        this. width = width
        this.length = length
    }
}
//定义工具方法,求短形面积,并通过export导出
export function area(rec: Rectangle) : number{
    return rec.width * rec.length
}

// 这个Rectangle类 ,上一个板块的区别:成员变量是公有的成员变量;方法的定义,以及变量的引用也有区别

//通过import语法导入,from后面写文件的地址
import {Rectangle, area} from '../rectangle'

//创建Rectangle对象
let r = new Rectangle(10,20)

//调用area方法
console.log('面积为:' + area(r))

// 注:文章为本人为督促自己学习而做的学习笔记,如有侵权,请联系我,我将在第一时间删除

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐