HarmonyOS-基础

发布于:2025-06-09 ⋅ 阅读:(20) ⋅ 点赞:(0)

接口文档:

iwen-个人后台管理

Rest参数: 可变参数

function sum(...nums:number[]) {

        let res = 0;

        for(let n of nums) {

                res += n;       

        }

        return res;

sum(1)

sum(1,2)

sum(1,2,3)

泛型:

泛型类型允许创建的代码在各种类型上运行

/***

* 泛型类

***/

class CustomStack<T> {

        public push(e:T) {

        }

}

let c = new CustomStack<string>();

c.push('hello')

let age = new CustomStack<number>();

age .push(123)

http://iwenwiki.com/

泛型函数:

function add<T>(x: T[]) {

        return x[x.length - 1]

}

add<number>([10,20,30])

add<string>(['iwen','jack'])

// 默认推倒:根据传递的参数推倒类型

add([10,20,30])

ArkTS语言-空安全:

默认情况下,ArkTS中的所有类型都是不可为空的,因此类型的值不能为空。

这类似于TypeScript的严格空值检查模式(strictNullChecks),但规则更严格。

let x: number = null; // 编译时错误

let x: number | null = null;  // 联合类型

x = 1; // ok

x = null;  // ok

非空断言运算符:

class A {

        value:number = 0

}

function foo(a : A | null) {

        //a.valuev

        a!.value;  //!.  a不为空时才调用value

}

// 空值合并运算符

空值合并二元运算符??用于检查左侧表达式的求值是否等于null或者underfined,如果是,则表达式的结果为右侧表达式,否则为左侧表达式。

换句话说 , a??b等价于三元运算符(a!=null && a!=underfined)? a : b

class Person{

        nick: string |null =null;

        getNick() : string {

                return this.nick ??  ''

        }

}

ArkTS语言模块

程序可划分为多组编译单元或模块。

每个模块都有其自己的作用域。即在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。

与此相对,从另一个模块导出的变量、函数、类、接口等必须首先导入到模块中。

导出:

可以使用关键字export导出顶层的声明。

未导出的声明名称被视为私有名称,只能在声明该名称的模块中使用。

export function hello() {

        return 'Hello ArkTS'

}

export default function hello() {

        return 'Hello ArkTS'

}

导入:

import { hello } from './文件名'

import default from './文件名'  // 不用加 { }

通过导入Kit方式使用开放能力有三种方式:

方式一:导入Kit下单个模块的接口能力。例如:

import { UIAbility } from '@kit.AbilityKit';

方式二:导入Kit下多个模块的接口能力。例如:

import { UIAbility, Ability, Context } from '@kit.AbilityKit';

方式三:导入Kit下包含的所有模块的接口能力。例如:

import * as module from '@kit.AbilityKit';  // module 就是起的别名

 生命周期:
组件和页面在创建、显示、销毁的这一整个过程中,会自动执行一系列的【生命周期钩子】
其实就是一系列的【函数】,让开发者有机会在特定的阶段运行自己的代码
区分页面和组件: @Entry
@Entry:页面性质的组件,页面的生命周期钩子比较多。
组件对应的2个钩子:
aboutToAppear:创建组件实例后执行,可以修改状态变量
aboutToDisappear:组件实例销毁前执行,不允许修改状态变量


onPageShow:页面每次显示触发(路由过程、应用进入前后台)
onPageHide:页面每次隐藏触发(路由过程、应用进入前后台)
onBackPress:点击返回出发(return true :阻止返回键默认返回效果,自己手写返回的代码,将来定制返回的逻辑。 router.back())
仅@Entry修改的页面组件生效。

aboutToAppear --> onPageShow -->onPageHide-->aboutToDisappear
由外及内的  先页面再组件

Stage模型:
应用模型是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必须的组件和运行机制。
简而言之:应用模型就是应用的施工图纸,它规范化了:程序运行流程、项目结构、文件功能等。。。
了解应用模型之后,就可以知道:
1、实现某个功能需要在哪个文件编码
2、如何感知应用的状态变化(启动、关闭、切后台)
3、如何调整项目配置
。。。


随着系统的演进发展,先后提供了两种应用模型:
1、FA模型:从API7开始支持的模型,已经不再主推
2、Stage模型:从API9开始新增的模型,是目前主推且会长期演进的模型

应用图标和描述信息,如下:

应用桌面图标和描述信息,如下:

Stage模型-UIAblity组件

onWindowStageCreate:当窗口舞台创建的时候的钩子

一个Ablity可以有多个页面,之间可以互相跳转

在模块右击,可新建Ability。

在项目右击,可新建模块。Ability可以理解成窗口,Page相当于界面。

备注:

https://gitee.com/huyi612/harmonyos-lessons/blob/master/entry/src/main/ets/views/task/TaskList.ets
https://gitee.com/huyi612/harmonyos-lessons/blob/master/entry/src/main/ets/pages/AnimationPage2.ets


网站公告

今日签到

点亮在社区的每一天
去签到