小学姐教你HarmonyOS开发-02-ArkTS语言基础

news2024/10/7 12:22:51

简单介绍基于TypeScript扩展的ArkTS语言。
ArkTS是鸿蒙生态的应用开发语言,由ArkUI框架提供,以声明式开发范式来开发界面,让开发者可以更简洁、更自然的方式开发高性能应用。

源课程:d2school(第2学堂)

什么是ArkTS?

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以更简洁、更自然的方式开发高性能应用。

ArkTS、TS和JS的关系

TypeScript(简称TS)是JavaScript(简称JS)的超集,ArkTS则是TS的超集。

关系图

初步了解TS常用的基础类型

已经了解的同学可跳过

  • 布尔值:TS中可以使用 boolean 来表示这个变量是布尔值,可以赋值为true或者false。
let show: boolean = false; 
  • 数字:TS中的所有数字都是浮点数,这些浮点数的类型是 number
let num1: number = 2024; 
let num2: number = 0b11111101000; // 二进制 2024 
let num3: number = 0o3750; // 八进制 2024 
let num4: number = 0x7e8; // 十六进制 2024 
  • 字符串:TS里使用 string 表示文本数据类型,可以使用双引号或单引号表示字符串。
let name: string = "Jacky"; name = 'Mick'; 
  • 数组:TS有两种方式可以定义数组。

第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组。

let list: number[] = [1, 2, 3]; 
第二种方式是使用数组泛型,Array<元素类型>。
let list: Array<number> = [1, 2, 3]; 
  • 元祖:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 stringnumber 类型的元组。
let x: [string, number]; x = ['hello', 10]; // OK 
x = [10, 'hello']; // Error 
  • Unknown:标记暂时未知类型的变量,直接通过编译阶段的检查。
let value: unknown = 4;
value= 'maybe a string instead';
value= false; 
  • Void:当一个函数没有返回值时,你通常会见到其返回值类型是 void
function test(): void { console.log('1'); } 
  • 联合类型:表示取值可以为多种类型中的一种。
let value: string | number;

value= 'hello'; value= 1; 
  • 为函数定义类型

为了确保输入输出的准确性,我们可以函数添加类型。
实现可选参数的功能只需在参数名旁使用 ?

function add(x: number, y: number, z?: number): number { 
    return x + y; 
} 

ArkTS声明式开发范式

装饰器

用来装饰类、结构体、方法以及变量,赋予其特殊的含义。

  • @Entry:表示这是个入口组件
  • @Component:表示这是个自定义组件;
  • @State:表示组件中的状态变量,此状态变化会引起UI变更。

自定义组件

可复用的UI单元,可组合其它组件,如上图中被 @Component 装饰的 struct Hello

UI描述

声明式的方式来描述 UI 的结构,如上图中 build() 方法内部的代码块。

内置组件

框架中默认内置的基础和布局组件,可直接被开发者调用,比如上图中的 RowColumnText

属性方法

用于组件属性的配置,统一通过属性方法进行设置,如上图中的 fontSize()fontWeight()width()height() 等,可通过链式调用的方式设置多项属性。

事件方法

用于添加组件对事件的响应逻辑,统一通过事件方法进行设置,如上图中跟随在 Text 后面的 onClick()

ArkTS基础知识

渲染控制语法🎞️ (本小节带视频)

  • 条件渲染:ifelse ifelse
@Entry
@Component
struct Index {
  @State count: number = 2

  build() {
    Row() {
      Column() {
        Button(`count:${this.count}`)
          .fontSize('30')
          .onClick(() => {
            this.count--
          })

        if (this.count === 0) {
          Text('Hello')
            .fontSize(50)
        } else if (this.count === 1) {
          Text('Hello World')
            .fontSize(50)
        } else {
          Text('Hello ArkTs')
            .fontSize(50)
        }

      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 效果-1

HMOS-ls02-1-ArkTS语言基础-1

  • 循环渲染:ForEach

@Entry
@Component
struct list {
  @State listData: Array<string> = ['苹果', '西瓜', '草莓']

  build() {
    Row() {
      Column() {
        ForEach(
          this.listData,
          (item: string, index: number) => {
            Text(`${index + 1}、${item}`)
              .fontSize(40)
          },
          (item: string) => item //可选
        )
      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 效果-2

HMOS-ls02-1-ArkTS语言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费的维吾尔语翻译工具,汉维翻译软件只推荐这一个《维汉翻译通App》,维吾尔文OCR字母识别!

免费维吾尔语翻译&#xff0c;真好用 《维汉翻译通》App提供免费的短文本翻译服务&#xff0c;支持翻译维吾尔语和汉语&#xff0c;无论是日常对话还是学术研究的内容&#xff0c;都能轻松应对。 维吾尔文OCR&#xff0c;文字识别新体验 高精度维文文字识别技术&#xff0c;让…

跟着AI学AI_11 PyTorch, TensorFlow 和JAX 功能对比简介

PyTorch, TensorFlow 和 JAX 功能对比简介 PyTorch、TensorFlow 和 JAX 是当前最流行的深度学习框架。它们各自具有独特的特性和优势&#xff0c;适合不同的应用场景和开发者需求。下面是对这三个框架的功能对比。 1. 基本概念和特性 PyTorch&#xff1a; 动态计算图&#xf…

王炸ChatGPT学术应用!从文献综述至定稿,轻松完成优质学术论文

智写论文 智写论文&#xff08;chatyy.cn&#xff09;是一款专注AI科研和学术写作的专业平台&#xff0c;AI论文写作、AI学术润色修改、科研分析、文献搜索和综述撰写&#xff0c;科研数据分析、英文学术润色&#xff0c;中英学术互译&#xff0c;文献查询和综述撰写&#xff…

知识图谱的应用---智慧外交

文章目录 智慧外交典型应用 智慧外交 智慧外交是指通过事件分析的手段&#xff0c;从历史、政治、经济、军事、文化等多个层面对各个国家的关系进行定量分析&#xff0c;提供智能化的外交关系研判和外交决策支撑。依托公开媒体、互联网及内部信息等海量资源数据&#xff0c;综合…

vivado HW_SIO_RX

HW_SIO_RX 描述 在硬件设备上&#xff0c;每个GT包括一个独立的接收器hw_sio_rx 由一个PCS和一个PMA组成。高速串行数据从板上的迹线流入 GTX/GTH收发器RX的PMA&#xff0c;进入PCS&#xff0c;最后进入FPGA逻辑。 相关对象 HW_SIO_RX对象与HW_server、HW_target、HW_device、H…

STM32F103 ADC

STM32 ADC 12位ADC是一种逐次逼近型模拟数字转换器,和比较型ADC相比&#xff0c;逐次逼近型ADC的优点是低功耗&#xff0c;缺点是速度慢。下图为逐次逼近型ADC。 ​ STM32F103的ADC有单次和连续转换两种模式&#xff0c;有通道扫描和单独工作两种模式&#xff0c;并且有校准和…

Gi标签管理

文章目录 前言理解标签创建标签操作标签总结 前言 理解标签 标签&#xff0c;可以理解为对某次commit的一次标识&#xff0c;相当于起起了一个别名。 例如&#xff0c;在项目发布某个版本时候&#xff0c;针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。 这有什…

inferCNV:scRNA-seq数据推断染色体拷贝数变化

inferCNV分析简介 inferCNV用于探索肿瘤单细胞RNA-Seq 数据&#xff0c;以确定体细胞大规模染色体拷贝数改变的证据&#xff0c;例如整个染色体或大片段染色体的增益或缺失。这是通过与一组参考“正常”细胞&#xff08;这里的正常细胞可自行定义&#xff09;进行比较&#xf…

【STM32】输入捕获应用-测量脉宽或者频率(方法2)

链接&#xff1a;https://blog.csdn.net/gy3509/article/details/139629893?spm1001.2014.3001.5502&#xff0c;讲述了只使用一个捕获寄存器测量脉宽和频率的方法&#xff0c;其实测量脉宽和频率还有一个更简单的方法就是使用PWM输入模式&#xff0c;PWM输入模式需要占用两个…

Imagic: Text-Based Real Image Editing with Diffusion Models

Imagic: Text-Based Real Image Editing with Diffusion Models Bahjat Kawar, Google Research, CVPR23, Paper, Code 1. 前言 在本文中&#xff0c;我们首次展示了将复杂&#xff08;例如&#xff0c;非刚性&#xff09;基于文本的语义编辑应用于单个真实图像的能力。例如…

Java NIO ByteBuffer 使用方法

前言 最近在使用spring boot websocket xterm.js 给 k8s pod做了个在线的 web 终端&#xff0c;发现websocket的类核心方法&#xff0c;用的都是ByteBuffer传递数据&#xff0c;如下&#xff1a; OnMessagepublic void onMessage(Session session, ByteBuffer byteBuffer) {…

MySQL-分组函数

041-分组函数 重点&#xff1a;所有的分组函数都是自动忽略NULL的 分组函数的执行原则&#xff1a;先分组&#xff0c;然后对每一组数据执行分组函数。如果没有分组语句group by的话&#xff0c;整张表的数据自成一组。 分组函数包括五个&#xff1a; max&#xff1a;最大值mi…

智造新篇章:MicroAlign融资助推高精度FA技术革新

随着智能化浪潮的汹涌澎湃&#xff0c;全球制造业正经历着前所未有的技术革新。MicroAlign&#xff0c;一家专注于高精度功能组装&#xff08;FA&#xff09;技术的创新企业&#xff0c;近日宣布完成了高达100万欧元的种子轮融资。这一轮融资不仅为MicroAlign注入了加速商业化的…

java基于Vue+Spring boot前后端分离架构开发的一套UWB技术高精度定位系统源码

java基于VueSpring boot前后端分离架构开发的一套UWB技术高精度定位系统源码 系统采用UWB高精度定位技术&#xff0c;可实现厘米级别定位。UWB作为一种高速率、低功耗、高容量的新兴无线局域定位技术&#xff0c;目前应用主要聚焦在室内外精确定位。在工业自动化、物流仓储、电…

【产品经理】发票系统简述

一、发票类型 增值税电子普通发票&#xff1a;简称电票 增值税普通发票和增值税专用发票&#xff0c;简称&#xff1a;纸票 蓝票&#xff1a;开票金额为正值的发票。红票&#xff1a;发票金额为负值的发票。 注&#xff1a;专票电子化系统国家目前在推&#xff0c;后续有更新…

digit 手写数据库笔记 (机械学习)

参考书籍 第三章内容 digit 手写数据库 # 最初的分类器 # digits 手写数字库import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn import tree # 性能评价相关的库 from sklearn import metrics# digits 数据加载 digits datase…

人工智能-机器学习算法是什么?

人工智能和机器学习是紧密相关的概念&#xff0c;可以说机器学习是人工智能的一个重要分支。机器学习是一门多学科交叉专业&#xff0c;涵盖概率论知识&#xff0c;统计学知识&#xff0c;近似理论知识和复杂算法知识&#xff0c;使用计算机作为工具并致力于真实实时的模拟人类…

一个小的画布Canvas页面,记录点的轨迹

Hello大家好&#xff0c;好久没有更新了&#xff0c;最近在忙一些其他的事&#xff0c;今天说一下画布canvas&#xff0c;下面是我的代码&#xff0c;实现了一个点从画布的&#xff08;0,0&#xff09;到&#xff08;canvas.width&#xff0c;canvas.height&#xff09;的一个实…

MYSQL数据库下载和安装(详细)

1.点击MySQL官网(后续照着图走) 2.软件下载完点击进入安装 设置要安装的路径然后点击OK,后面点击下一步 再点击下一步 MySQL推荐使用最新的数据库和相关客户端&#xff0c;mysql8换了加密插件&#xff0c;所以如果选第一种方式&#xff0c;很可能导致你的navicat等客户端连不上…

手把手教你,怎么用手机开发一个H5整蛊小游戏

前言&#xff1a; 相信在大家的认知里&#xff0c;做软件&#xff0c;做应用肯定都是通过电脑来进行开发的吧。但是你听说过用手机也可以开发软件吗&#xff1f;今天就教大家如何用手机轻松的开发出一款整蛊的H5小游戏。 首先我们需要借助一个工具CodeFlying&#xff0c;它能够…