当前位置: 首页 > article >正文

Harmony OS开发-ArkTS语言速成五

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前!


1.ArkTS中的联合类型

1.1 联合类型

在TypeScript中,联合类型(Union Types)允许我们定义一个变量可以是多种类型之一。

ArkTS作为TypeScript的一个框架,同样支持联合类型的特性。联合类型对于处理那些可能在不同情况下具有不同类型的变量非常有用。

联合类型使用 | 操作符来定义,它可以包含任意数量的类型。

类型缩小是 TypeScript 在运行时通过某些操作确保变量类型的过程。常见的类型缩小方式包括使用 typeof、instanceof、赋值、控制流语句(如 if、switch)等

1.2 联合类型使用

1.定义联合类型

使用 | 联合对应的数据类型

 //定义联合类型
 let str:string | number =0;

2.使用联合类型

  //赋值
  str="测试联合类型"
  str=100;
  console.log("Feri-联合类型 ,",str)

2.ArkTS中的枚举类型

2.1 枚举类型

枚举类型是一种特殊的数据类型,约定变量只能在一组数据范围内选择值。

枚举(Enums)是一种特殊的数据类型,它允许开发者为一组相关的数值定义友好的名称。枚举在许多编程语言中都是一种常见的特性,它们可以增强代码的可读性和维护性。

2.2 枚举类型使用

1.定义枚举

enum LoginType{
  pass="账号密码登录",
  code="验证码登录",
  qrcode="扫码登录",
  three="第三方登录",
  face="人脸识别登录"
}

2.使用枚举

 Button("枚举类型").onClick(()=>{
          //枚举类型使用
          let type1:LoginType =LoginType.code
          let type2:LoginType=LoginType.qrcode
          console.log("Feri-枚举,",type1)
          console.log("Feri-枚举",type2)

      }).margin(5).width("100%")

3.导出

使用关键字export导出顶层的声明 未导出的声明名称被视为私有名称,只能在声明该名称的模块中使用

//export 其他模块都可以导入 
export class User{
  id:number =0;
  username:string="";
  password:string="";

  constructor(id: number,name: string,pass: string) {
    this.id=id;
    this.username=name;
    this.password=pass;
  }
}

4.导入

4.1 静态导入

导入声明用于导入从其他模块导出的实体,并在当前模块中提供其绑定。

导入声明由两部分组成:

1.导入路径

用于指定导入的模块;

2.导入绑定

用于定义导入的模块中的可用实体集和使用形式(限定或不限定使用)。

导入绑定可以有几种形式:

假设模块具有路径“./utils”和导出实体“X”和“Y”。

导入绑定* as A表示绑定名称“A”,通过A.name可访问从导入路径指定的模块导出的所有实体:

import * as Utils from './utils/FeriUtil';
Utils.X // 表示来自FeriUtil的X
Utils.Y // 表示来自FeriUtil的Y

导入绑定{ ident1, ..., identN }表示将导出的实体与指定名称绑定,该名称可以用作简单名称:

import { X, Y } from './utils/FeriUtil';
X // 表示来自FeriUtil的X
Y // 表示来自FeriUtil的Y

如果标识符列表定义了ident as alias,则实体ident将绑定在名称alias下:

import { X as Z, Y } from './utils/FeriUtil';
Z // 表示来自FeriUtils的X
Y // 表示来自FeriUtil的Y
X // 编译时错误:'X'不可见

4.2 动态导入

应用开发的有些场景中,如果希望根据条件导入模块或者按需导入模块,可以使用动态导入代替静态导入。

import()语法通常称为动态导入dynamic import,是一种类似函数的表达式,用来动态导入模块。以这种方式调用,将返回一个promise。

如下例所示,import(modulePath)可以加载模块并返回一个promise,该promise resolve为一个包含其所有导出的模块对象。

该表达式可以在代码中的任意位置调用。

// Calc.ts
export function add(a:number, b:number):number {
  let c = a + b;
  console.info('Dynamic import, %d + %d = %d', a, b, c);
  return c;
}

// Index.ts
import("./Calc").then((obj: ESObject) => {
  console.info(obj.add(3, 5));  
}).catch((err: Error) => {
  console.error("Module dynamic import error: ", err);
});

4.3 导入HarmonyOS SDK的开放能力

HarmonyOS SDK提供的开放能力(接口)也需要在导入声明后使用。可直接导入接口模块来使用该模块内的所有接口能力,例如:

import UIAbility from '@ohos.app.ability.UIAbility';

从HarmonyOS NEXT Developer Preview 1版本开始引入Kit概念。SDK对同一个Kit下的接口模块进行了封装,开发者在示例代码中可通过导入Kit的方式来使用Kit所包含的接口能力。

其中,Kit封装的接口模块可查看SDK目录下Kit子目录中各Kit的定义。

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

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

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

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

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

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

import * as module from '@kit.AbilityKit';

其中,“module”为别名,可自定义,然后通过该名称调用模块的接口。

说明

方式三可能会导入过多无需使用的模块,导致编译后的HAP包太大,占用过多资源,请谨慎使用。


http://www.kler.cn/a/468478.html

相关文章:

  • Flutter 鸿蒙化 flutter和鸿蒙next混和渲染
  • 【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现
  • 如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构
  • 余华和他的书
  • edeg插件/扩展推荐:助力生活工作
  • 「Java 数据结构全面解读」:从基础到进阶的实战指南
  • 嵌入式Linux(二)·配置VMware使用USB网卡连接STM32MP157实现Windows、Ubuntu以及开发板之间的通信
  • 基于海思soc的智能产品开发(camera sensor的两种接口)
  • React中的合成事件
  • 源代码编译安装X11及相关库、vim,配置vim(2)
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之13 方案再探之4:特定于领域的模板 之 div模型(完整版)
  • SpringCloud源码-Ribbon
  • Python爬虫基础——案例:爬取豆瓣电影动画排行榜
  • 蓝桥杯备赛:C++基础,顺序表和vector(STL)
  • Zabbix5.0版本(监控Nginx+PHP服务状态信息)
  • Earth靶场
  • SQL 基础教程 - SQL UPDATE 语句
  • [python3]Excel解析库-calamine,10倍openpyxl性能
  • 19.3、Unix Linux安全分析与防护
  • MongoDB相关使用问题
  • ansible-Ad-hoc命令行模式
  • java 字典表加载内存
  • Bash Shell的操作环境
  • NLP中特征提取方法的总结
  • 使用javacv获取海康威视rtsp流的详细教程
  • Samsung手机首次主要采用竞对Micron LPDDR5内存