ArkTS基础快速入门

news2024/9/21 4:33:16

初识ArkTS语言

ArkTS:是一门用于开发鸿蒙应用的编程语言。

ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。

同时,它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。

针对JavaScript(简称JS)/TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强。

ArkTS支持与JS/TS高效互操作,兼容JS/TS生态。
 

ArkTS设计理念

  • 为更好地支持HarmonyOS应用的开发和运行,从Harmony OS NEXT Developer Preview 0版本开始,ArkTS在TS的基础上,进一步通过规范强化静态检查和分析,这样做有两个好处:许多错误在编译时可以被检测出来,不用等到运行时,这大大降低了代码运行错误的风险,有利于程序的健壮性;2.减少运行时的类型检查,从而降低了运行时负载,有助于提升执行性能。
  • ArkTS保留了TS大部分的语法特性,这可以帮助开发者更容易上手ArkTS。同时,对于已有的标准TS代码,开发者仅需对少部分代码进行ArkTS语法适配,大部分代码可以直接复用。
  • ArkTS支持与标准JS/TS的高效互操作,兼容JS/TS生态。HarmonyOS也提供了标准JS/TS的执行环境支持,在“更注重已有生态直接复用”的场景下,开发者可以选择使用标准JS/TS进行代码复用或开发,更方便兼容现有生态。

一、认识数据

编程语言的核心是处理 数据

三种常见的基础数据类型:

  1. string 字符串:描述信息
  2. number 数字:计算
  3. boolean 布尔:判断(真、假)

二、存储数据(变量、常量)

变量

变量:专门用来存储数据的容器

let 变量名:类型 = 值

let title:string = '我是天才交易员'
let price:number = 21.8
let isSelect:boolean = true
let title:string = '我是天才交易员'
title = '我是金融消费者'
console.log(title)
// 运行结果
我是金融消费者

常量

常量:用来存储数据(不可变)

const 常量名:类型 = 值

const PI:number = 3.1415926
const name:string = '刘德华'

命名规则

  1. 只能包含数字、字母、下划线、$、不能以数字开头
let num-1:number = 11 //错误
let num_1:number = 11 //正确
let num$:number = 11 //正确
let 1num:number = 11 //错误

  1. 不能使用内置的关键字或保留字 (比如 let、const)
let let:number = 100 //错误
let const:string = 'abc'//错误

  1. 严格区分大小写
let myName:string = '吴彦祖' //运行结果:吴彦祖
let myname:string = '彭于晏'//运行结果:彭于晏

三、数组

数组:是一个容器、可以存储多个数据

let 数组名:类型[] = [数据1,数据2,数据3,……]

let sum:number[] = [1,2,3,4,……]
let names:string[] = ['小红','小李',……]

let names:string[] = ['小红','小李','小梅','小晶','小莎','小莲',……]

注意:

  1. 数组指定的类型和存储的数据类型要必须一致,否则会报错
let names:string[] = ['小红','小李','小梅',500] //报错

  1. 数组中存储的每个数据都有自己的编号,编号从0开始(索引、下标)
// 利用有序的索引取数组的数据
数组名[索引]

let names:string[] = ['小红','小李','小梅','小晶','小莎','小莲']
console.log(names[2])

// 运行结果
// 小梅

四、函数

函数:是可以重复使用的代码块

函数有利于代码复用,不用重复编写相同的代码,提高开发效率

// 定义函数
function fn(){
  //函数体
}

// 调用函数
fn()

函数的完整用法

根据我们传入不同的数据,进行处理,返回处理后的结果

function 函数名(形参1:数据类型,形参2:数据类型){
  编写代码对数据进行处理
  return 处理后的结果
}

let 变量名:类型 = 函数名(实参1,实参2)
// 传入价格 和 数量 ,返回计算结果
// 1.苹果 2元/斤 ,买了3斤,多少钱
// 2.香蕉 4元/斤 ,买了4斤,多少钱
function sum(price:number,num:number){
  // 1.处理数据
  let result:number = price * num
  // 2.返回结果
  return result
}
let xiangjiao:number = sum(4,4)
let apple:number = sum(2,3)
console.log('香蕉价格:',xiangjiao)
console.log('苹果价格:',apple)

注意:形参和实参个数要一致

五、箭头函数

箭头函数是比普通函数 更简洁 的一种函数写法。

() => {
  // 函数体
}
// 1.定义函数
let 函数名 = () => {
  // 函数体
}
// 2.调用函数
函数名()

箭头函数的完整写法

// 1.定义函数
let 函数名 = (形参1:数据类型,形参2:数据类型) => {
  // 函数体
  // 1. 计算过程
  // 2. 返回结果
  return 计算的结果
}
// 2.调用函数
函数名(实参1,实参2)
// 传入价格 和 数量 ,返回计算结果
// 1.苹果 2元/斤 ,买了3斤,多少钱
// 2.香蕉 4元/斤 ,买了4斤,多少钱
let sum = (price:number,num:number) => {
  // 1.处理数据
  let result:number = price * num
  // 2.返回结果
  return result
}
let xiangjiao:number = sum(4,4)
let apple:number = sum(2,3)
console.log('香蕉价格:',xiangjiao)
console.log('苹果价格:',apple)

六、对象

作用:用于描述一个物体的特征行为

对象:是一个可以存储多个数据的容器。

let 对象名称:对象结构类型 = 值

1.通过interface接口约定 对象结构类型

interface 接口名 {
  属性1:类型1
  属性2:类型2
  属性3:类型3
}


interface Person {
  name:string
  age:number
  weight:number
}

2.定义对象并使用

let person:Person = {
  name:'木力',
  age:18,
  weight:90
}

3.获取对象的属性值

对象名.属性值

// 获取年龄
person.age

对象 - 方法

方法作用:描述对象的具体行为

1.约定方法类型

interface 接口名称{
  方法名:(参数:类型) => 返回值类型
}

interface Person{
  dance:() => void
  sing:(song:string) => void
}

2.添加方法(箭头函数)

let ym:Person = {
  dance:() => {
    console.log('杨幂说','我来跳个舞')
  },
  sing:(song:string) => {
    console.log('杨幂说','我来跳个舞',song)
  }
}

ym.dance()
ym.sing('爱的供养')

七、联合类型

联合类型是一种灵活的数据类型,它修饰的变量可以存储不同类型的数据。

let 变量:类型1 | 类型2 | 类型3 = 值
let judge:number | string = 100
judge = 'A'

联合类型还可以将变量值,约定在一组数据范围内进行选择。

let gender:'man' | 'woman' | 'secret'

八、枚举类型

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

1.定义枚举类型(常量列表)

enum 枚举名 {
  常量1 = 值,
  常量2 = 值,
  ……
}

enum ThemeColor {
  Red = '#ff0f29',
  Orange = '#ff7100',
  Green = '#30b30e',
}

2.使用枚举类型,约束变量

let color:ThemeColor = ThemeColor.Red
console.log('主题颜色',color)

枚举类型的特点:

  1. 枚举类型是一种特殊的数据类型
  2. 约定变量也只能在一组数据范围内选择,提高可维护性

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

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

相关文章

启动yarn后,其他节点没有NodeManager

写在前面: 这个问题虽然折磨了我两天,但是原因特别蠢,可能与各位不一定一样,我是因为ResourceManager的节点的"/etc/hadoop/workers"文件没有配置好(没有配hadoop102和hadoop104),但排…

FPGA学习笔记(一) FPGA最小系统

文章目录 前言一、FPGA最小系统总结 前言 今天学习下FPGA的最小系统一、FPGA最小系统 FPGA最小系统与STM32最小系统类似,由供电电源,时钟电路晶振,复位和调试接口JTAG以及FLASH配置芯片组成,其与STM32最大的不同之处就是必须要有…

QQ频道导航退出

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140413538 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

three.js添加多个画布

多个场景的渲染需要多个画布,但是这样会导致加载模型纹理次数变多,基本方法是用一张canvas在整个背景中填充视口,利用其它元素作为每个虚拟画布,只在canvas中加载一个渲染器renderer,并为每个虚拟画布创建一个场景&…

实训第一天笔记

#初始化一个新的NPM项目(根据提示操作) npm init #安装TSC、TSLint和NodeJS的类型声明 npm install -s typescript tslint types/node 在根目录中新建一个名为tsconfig.json的文件,然后在代码编辑器中打开,写入下述内容: {"compilerO…

Chromium CI/CD 之Jenkins实用指南2024-如何创建新节点(三)

1. 前言 在前一篇《Jenkins实用指南2024-系统基本配置(二)》中,我们详细介绍了如何对Jenkins进行基本配置,包括系统设置、安全配置、插件管理以及创建第一个Job。通过这些配置,您的Jenkins环境已经具备了基本的功能和…

Qt文件下载工具

在Qt中实现文件下载功能,通常可以通过多种方式来完成,包括使用 QNetworkAccessManager 和 QNetworkReply 类,或者使用更高级别的 QHttpMultiPart 类。以下是两种常见的实现方法: 方法1:使用 QNetworkAccessManager 和…

AI操作系统势头正猛,以后LINUX,和window,Android,IOS等等的OS都将被AI OS所取代!

AI操作系统是一种旨在利用人工智能技术来优化和管理计算资源的操作系统。它不仅仅是一个传统意义上的操作系统,而是一个能够自主学习和适应用户需求的智能平台。以下是对AI操作系统的一些关键特点和它是否能取代现有操作系统的讨论: AI操作系统的关键特…

OpenCV图像处理——判断轮廓是否在圆环内

要判断一个轮廓是否在圆环内&#xff0c;可以将问题分解为两个步骤&#xff1a; 确保轮廓的所有点都在外圆内。确保轮廓的所有点都在内圆外。 下面是一个完整的示例代码&#xff0c;展示如何实现这一点&#xff1a; #include <opencv2/opencv.hpp> #include <iostr…

QT VTK 简单测试工程

目录 1 目录结构 2 文件源码 3 运行结果 4 报错及处理 使用编译好的VTK库进行测试 1 目录结构 2 文件源码 Pro文件 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. #…

Iceberg概念和特性

1. 快照 Iceberg会随着时间的推进,跟踪表生命周期中的所有数据集变化,并使用快照(Snapshots)来表示每一次变化后的数据集合,每一次数据操作的事务提交均会产生一个快照,并将其记录在元数据文件(Metadata)中。 基于快照的概念,Iceberg有以下特性: 事务性:写入快照成…

数据链路层协议 ------------- 以太网协议

文章目录 链路层解决的问题![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ab01312d49ee479082a2255ad9fbfc99.png)以太网协议认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMUT对IP协议的影响MTU对UDP协议的影响MTU对TCP协议的影响ARP协议ARP协议…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?

引言 51单片机&#xff0c;作为一种经典的微控制器&#xff0c;被广泛应用于各种嵌入式系统中。尽管如今ARM架构的高性能低成本单片机在市场上占据主导地位&#xff0c;但51单片机凭借其独特的优势依然在某些领域保持着应用价值。本文将深入探讨51单片机的特点、架构、应用以及…

读人工智能全传13人工智能导致的问题2

1. 机器人sha手 1.1. 自主57的话题总是带有强烈的煽动性&#xff0c;许多人会本能地厌恶它&#xff0c;认为这样的系统是不道德的&#xff0c;永远不该被建立 1.2. 自主57的讨论大多源于战争中使用得越来越频繁的无人机 1.3. 无人机 1.3.1. 人驾驶的飞机&#xff0c;在菌用…

MySQL空间索引

空间类型是建立在空间类型字段上的。 空间类型 MySQL的空间类型很多&#xff0c;我就不逐一介绍了。重要分四大类&#xff1a; GeometryCurveSurfaceGeometryCollection 前三种&#xff0c;地理、曲线、曲面都是不可实例化的。Geometry有一个子类Point, Curve有一个直接子类L…

ceph 部署

端口号 NFS 2049 rpcbind 111 NFS 目录越深&#xff0c;写入性能越差 操作简单&#xff0c; 一.前言&#xff1a;存储知识 1、存储基础 单机存储设备 【1】DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS…

springsecurity 身份认证

Spring Security简介 是一个功能强大且高度可定制的安全框架&#xff0c;它主要为Java程序提供声明式的身份验证&#xff08;认证&#xff09;和访问控制&#xff08;授权&#xff09;功能为基于Spring的企业应用系统提供了全面的安全解决方案&#xff0c;通过声明式的方式管理…

Windows中安装python/cmd中执行python命令无效

1、问题阐述? 本文章提供非常详细的安装教程。 本文章适合于不会安装python或者安装了python后,在cmd中执行python命令无效的情况。 2、下载python python下载官网地址:Download Python | Python.org 在下面的框子中选择你需要的版本 如果是windows选择如下包 如下版本…

基于Jetpack Compose实现的Android Preference

基于Jetpack Compose实现的Android Preference Jetpack Compose实现的Android偏好Preference实现,实现了CheckBoxPreference、EditTextPreference、SingleChoicePreference、SliderPreference等常见的 Preference 类型, 代码如下: 基类Preference :@Composable fun Prefer…