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

2024最新版鸿蒙纯血原生应用开发教程文档丨学习ArkTS语言-基本语法


ArkTS是HarmonyOS的主要应用开发语言,在TypeScript基础上进行了扩展,保留了其基本风格,并通过增强静态检查和分析来提高程序的稳定性和性能。本教程将帮助开发者掌握ArkTS的核心功能、语法及最佳实践,以便高效地构建高性能移动应用。

1. 基本语法

1.1. 字面量

字面量(Literal)是一种直接表示在源代码中的固定值,不同类型的字面量格式有所不同,下面是ArkTS中各类型字面量的表示方式。

  • 数值型字面量
    • 整数:数学中的整数(例如:8, 15, 123)
    • 浮点数:带有小数点的数字(例如:8.15, 1.234)
  • 字符串型字面量:用单引号或双引号括起来的文本(例如:'abc', "你好世界")
  • 布尔型字面量:表示真假(例如:true, false)
//1.整数型字面量
console.log('整数:',60);       //60

//2.浮点型字面量
console.log('浮点数:',3.14)  //3.14
console.log('浮点数:',.14)   //0.14
console.log('浮点数:',1e2)   //100

//3.布尔型字面量
console.log('布尔型:',true)   //true
console.log('布尔型:',false)   //false

//4.字符串型字面量
console.log('字符串:','Hello ArkTS')		  //Hello ArkTS
console.log('字符串:',"Hello HarmonyOS") 	//Hello HarmonyOS

1.2. 变量

在计算机语言中,变量可以理解为存储数据的容器。在ArkTS中定义变量的格式如下

let 变量名: 类型 = 值

int a = 10; 	//Java
let a:number = 10	//ArkTS

例:比如在华为商城中有很多商品,我们现在想定义一个变量,用来存储商品的标题

定义各种类型的变量

let title: string = 'HUAWEI Mate 60 Pro'
console.log(title)

1.3. 类型

ArkTS是一种静态类型的语言,定义变量时必须明确数据类型。 ArkTS支持的数据类型有以下几种

number 类型

number 用于表示数字,包括整数和浮点数。

let num: number = 10; 
let floatNum: number = 3.14;

string 类型

string 用于表示文本数据,可以包含字母、数字、符号和空格等。可以使用单引号(')、双引号(")或反引号(`)来声明字符串。反引号内可以嵌入表达式,形成模板字符串。

let name: string = 'ArkTS!'; 
let desc: string = "ArkTS是HarmonyOS的主要应用开发语言"
let templateStr: string = `Hello,${name}. ${desc}` 

boolean 类型

boolean 用于表示逻辑上的真值和假值。只有两个值:truefalse

  let isDone: boolean = false;

array 类型

array即数组,它是一个存储数据的容器,数组的长度由数组中元素的个数来确定。数组中第一个元素的索引为0。

let names: string[] = ['Alice', 'Bob', 'Carol'];
names[0] = "爱丽丝"
console.log(names[0])

enum类型

enum类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。

使用枚举常量时必须以枚举类型名称为前缀。

enum ColorSet { 
  Red, 
  Green, 
  Blue 
}
let c: ColorSet = ColorSet.Red;

常量表达式可以用于显式设置枚举常量的值。

enum ColorSet { 
  White = 0xFF, 
  Grey = 0x7F, 
  Black = 0x00 
}
let c: ColorSet = ColorSet.Black;

union类型

union类型,即联合类型,是由多个类型组合成的引用类型。联合类型可以包含了变量可能的所有类型

type Type = string | number | ColorSet | string[] | ColorSet[]

let a1: Type = "red" //正确
let a2: Type = 0xff00 //正确
let a3: Type = ColorSet.Red //正确
let a4: Type = ["red", "balck"] //正确
let a5: Type = [ColorSet.Red] //正确
let a6: Type = true //错误

Aliases类型

Aliases类型为别名类型,可以为已有类型提供替代名称,或者为匿名类型(数组、函数、对象字面量或联合类型)提供名称。

// 为number类型取一个别名为int
type int = number
let a: number = 10
let b: int = 10

1.4. 常量

常量是不会发生改变的数据,它只能被赋值一次。定义格式如下

const 变量名: 类型 = 值

例:在数学中有一个非常重要的常量,就是圆周率π

const PI: number = 3.1415926
PI = 31.4 //这是错误的,变量的值只能被赋值一次。

1.5. 类型推断

由于ArkTS是一种静态类型语言,所有数据的类型都必须在编译时确定。但是,如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。

//以下两种定义变量的方式都可以
let a1: number = 10
let a2 = 10

1.6. 命名规范

不管定义变量还是定义常量,取名也是不是乱取的,是有一些命名规则的,必须遵守这些规则,否则代码编译不通过。

1. 只能包含数字、字母、下划线、$,不能以数字开头
2. 不能使用内置关键字或者保留字
3. 严格区分大小写

1.7. undefined 空值

先说结论,undefined表示一个变量它的值为“空值”,意思就是这个变量没有值,其它就是undefined。

有下面几种情况,变量的值是undefined.

情况一:变量没有显示的赋值,其值默认就是undefined

变量没有显示的赋值,但是直接使用这个变量是不推荐的,所以编译器会报错。为了验证上面的结论,我们可以使用强制断言符号“!”,强制编译通过。

let a: string
console.info(`${a}`)	//编译报错
console.info(`${a!}`)	//编译通过,输出undefined

let b: number 
console.info(`${b!}`)	//编译通过,输出undefined

情况二:变量没有显示赋值,但是明确声明类型可以是undefined,其值默认也是undefined

let a: string | undefined
console.info(`${a}`)	//编译通过,输出undefined

let b: number | undefined
console.info(`${b}`)	//编译通过,输出undefined

情况三:变量显示赋值为undefined,其类型必须声明为undefined类型

let a: string  = undefined	//编译错误
let b: string | undefined = undefined
console.info(`${a}`)	//编译通过,输出undefined

注意:不管是前面那种情况,在后续代码中都可以给值为undefined的变量赋值。

let a: string
let b: number | undefined
let c: boolean | undefined = undefined
console.info(`${a!}`)	//输出undefined
console.info(`${b}`)	//输出undefined
console.info(`${c}`)	//输出undefined
a = 'hello'
b = 20
c = true
console.info(`${a}`)	//输出hello
console.info(`${b}`)	//输出20
console.info(`${c}`)	//输出true

1.8. 数组

数组是能够存储0个或者多个数据的容器。下面两种格式都可以定义数组

let 数组名: Array<类型> = [值1, 值2, 值3];
let 数组名: 类型[] = [值1,值2,值3]

例:定义一个数组,用来存储班级中学生的姓名

let names1: Array<string> = ['小明','小黄','阿珍','阿强']
let names2: string[] = ['小明','小黄','阿珍','阿强']

例:定义数组也可以使用类型推断,省略数据类型

let names3 = ['小明','小黄','阿珍','阿强']

数组中存储的数据统称为元素,每一个元素都会有一个唯一的索引编号,通过数组名[索引]就可以找到任意一个元素。

console.log(‘names2[0]’,names2[0]) 	//小明
names2[1] = ‘大黄’	
console.log(‘names2[1]’,names2[1])	//大黄
console.log(‘names2[2]’,names2[2])	//阿珍
console.log(‘names2[3]’,names2[3])	//阿强

1.9. 运算符

运算符(Operator)是一种告诉编译器执行特定数学或逻辑操作的符号。任何一门计算机语言运算操作基本上是一样的。

1.9.1. 算术运算符

所有算术运算符如下表所示

运算符

含义

+

加法运算、字符串拼接

-

减法运算

*

乘法运算

/

除法运算,整数相除只能得到整数

%

取模(余数)

++

自增运算(在原来数据的基础上+1)

--

自减运算(在原来数据的基础上-1)

以上运算符都比较简单,下面重点讲解一下++或者--运算符的运算规则。

  • 单独使用:不断++或者--放在操作数的前面还是后面,都表示对操作数自增1或者自减1
    let x = 3
    let y = ++x	//a先+1,再把a的结果赋值给b
    console.log(`x的值为${x}`) //x的值为4
    console.log(`y的值为${y}`) //y的值为4
  • 混合使用:++和--可以放在变量前面或者后面,运算顺序有所不同
    let i = 3
    let j = i++	//先把i的值赋值给j,i再+1
    console.log(`i的值为${i}`) //x的值为4
    console.log(`j的值为${j}`) //y的值为3
  • let i = 3
    let j = i++	//先把i的值赋值给j,i再+1
    console.log(`i的值为${i}`) //x的值为4
    console.log(`j的值为${j}`) //y的值为3

  • 1.9.2. 赋值运算符

    赋值运算就是把具体数据值赋值给变量,有下面的几个运算

    运算符

    含义

    =

    把右边的值赋值给左边

    +=

    左右两边相加的结果赋值给左边

    -=

    左右两边相减的结果赋值给左边

    *=

    左右两边相乘的结果赋值给左边

    /=

    左右两边相除的结果赋值给左边

    %=

    左右两边取余数的结果赋值给左边

  • let a1 = 10	//把整数10赋值给var类型的变量a
    let b1 = 20
    b1 += 10 		//把b+10之后,把结果再赋值给b,最终b=30
    console.log(`b1的值为${b1}`) //b1的值为30
    
    
    let c1 = 10
    c1 %= 4			//把c对4取余数,把结果再赋值给c,最终c=2
    console.log(`c1的值为${c1}`) //c1的值为2


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

相关文章:

  • Java中将异步调用转为同步的五种方法
  • 深究map_set底层,探寻AVLTree与红黑树的秘密
  • 从零开始:在 MacOS 中通过 Docker 部署跨平台 Redis 服务(支持 Ubuntu 迁移)
  • Ansible剧本-playbook
  • 【Java】访问限制符
  • 计算机毕业设计SpringBoot+Vue.js体育馆管理系统(源码+文档+PPT+讲解)
  • 【深度学习神经网络学习笔记(二)】神经网络基础
  • 已经有私钥的情况下,mac如何配置私钥
  • Flash-03
  • iOS手机App爬虫- (1) Mac安装Appium真机运行环境
  • C++学习之C概述、数据类型、进制转换与数据存储
  • pdf加自定义水印
  • Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用
  • C++ openssl AES/CBC/PKCS7Padding 256位加密 解密示例 MD5示例
  • 数字IC低功耗后端设计实现之power gating和isolation技术
  • C 语言结构体:从入门到进阶的全面解析
  • deepseek_v3_base和deepseek_r1_zero和deepseek_r1
  • 实战篇-java8中的垃圾回收器
  • 图像分割UNet、生成模型SD及IP-Adapter
  • 多媒体常用概念