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

ArkTS基础语法:从声明到类型的深度解析

# ArkTS基础语法:从声明到类型的深度解析

在鸿蒙应用开发的领域中,ArkTS作为重要的编程语言,其基础语法是开发者们必须掌握的关键内容。今天,我们就围绕ArkTS的声明和类型相关知识展开深入探讨,帮助大家更好地理解和运用这门语言。

## 一、声明:变量与常量的奇妙世界

在ArkTS里,声明是引入变量、常量、函数和类型的重要方式。

### (一)变量声明

变量声明以关键字`let`开头,它就像一个灵活的容器,在程序执行期间可以存储不同的值。比如:

```typescript

let hi: string = 'hello';

hi = 'hello, world';

```

这里先声明了一个字符串类型的变量`hi`,初始值为`hello`,随后又将其值更新为`hello, world`,充分体现了变量的可变性。

### (二)常量声明

常量声明则由关键字`const`引领,它是只读的,一旦赋值就不能再更改,如同被锁定的宝藏。例如:

```typescript

const hello: string = 'hello';

```

要是尝试对常量重新赋值,就会在编译时引发错误,这保证了程序中一些固定值的稳定性。

### (三)自动类型推断

ArkTS属于静态类型语言,所有数据的类型都要在编译时确定。不过,当变量或常量声明时带有初始值,开发者就无需显式指定类型,ArkTS会自动推断。像下面这两个声明:

```typescript

let hi1: string = 'hello';

let hi2 = 'hello, world';

```

`hi1`显式指定了类型为字符串,`hi2`虽然没有明说,但ArkTS能根据初始值推断出它也是字符串类型。

## 二、类型:数据的“身份标识”

ArkTS的类型系统丰富多样,涵盖了基本类型和引用类型,每种类型都有着独特的用途。

### (一)基本类型

1. **number类型**:`number`类型可用于表示整数和浮点数。数字字面量形式多样,整数字面量有十进制(如`0`、`117`、`-345`)、十六进制(以`0x`或`0X`开头,如`0x1123`)、八进制(以`0o`或`0O`开头,如`0o777`)、二进制(以`0b`或`0B`开头,如`0b11`)。浮点字面量则由十进制整数、小数点、小数部分和指数部分组成,例如`3.14`、`1e2`等。但要注意,`number`类型在处理大整数时可能会出现精度丢失的情况,此时可以使用`bigInt`类型,比如:

```typescript

let bigIntger: BigInt = BigInt('999999999999999999999999999999999999999999999999999999999999');

console.log('bigIntger' + bigIntger.toString());

```

2. **boolean类型**:`boolean`类型只有`true`和`false`两个值,常用于条件语句中,作为判断的依据。例如:

```typescript

let isDone: boolean = false;

if (isDone) {

    console.log ('Done!');

}

```

3. **string类型**:`string`代表字符序列,可以使用转义字符。字符串字面量可以用单引号、双引号或反向单引号(模板字面量)括起来。比如:

```typescript

let s1 = 'Hello, world!\n';

let s2 = 'this is a string';

let a = 'Success';

let s3 = `The result is ${a}`;

```

模板字面量`${}`的用法非常方便,能直接在字符串中嵌入表达式。

### (二)引用类型

1. **void类型**:`void`类型用于表明函数没有返回值,它只有一个值`void`,并且可用于泛型类型参数。例如:

```typescript

class Class<T> {

    //...

}

let instance: Class<void>

```

2. **Object类型**:`Object`类型是所有引用类型的基类型,任何值(包括基本类型,会自动装箱)都能赋给`Object`类型的变量。而`object`类型表示除基本类型外的类型。

3. **array类型**:数组是由指定元素类型的数据组成的对象,通过数组复合字面量(方括号括起来的表达式列表)赋值,数组长度由元素个数决定,索引从0开始。例如:

```typescript

let names: string[] = ['Alice', 'Bob', 'Carol'];

```

4. **enum类型**:`enum`类型即枚举类型,是一组预先定义的命名值。使用枚举常量时要加上枚举类型名称前缀,还可以用常量表达式设置枚举常量的值。比如:

```typescript

enum ColorSet { Red, Green, Blue }

let c: ColorSet = ColorSet.Red;

enum ColorSet { White = 0xFF, Grey = 0x7F, Black = 0x00 }

let c: ColorSet = ColorSet.Black;

```

5. **Union类型**:`Union`类型是多个类型组合而成的引用类型,变量可以赋值为其中任何组成类型的有效值。例如:

```typescript

class Cat {

    name: string = 'cat';

    //...

}

class Dog {

    name: string = 'dog';

    //...

}

class Frog {

    name: string = 'frog';

    //...

}

type Animal = Cat | Dog | Frog | number;

let animal: Animal = new Cat();

animal = new Frog();

animal = 42;

```

还可以通过`instanceof`等机制获取联合类型中特定类型的值。

6. **Aliases类型**:`Aliases`类型为匿名类型或已有类型提供别名,让代码更简洁易读。比如:

```typescript

type Matrix = number[][];

type Handler = (s: string, no: number) => string;

type Predicate <T> = (x: T) => boolean;

type NullableObject = Object | null;

```

ArkTS的声明和类型系统是其编程的基础核心。熟练掌握这些知识,能让我们在鸿蒙应用开发过程中,更准确地定义数据、编写逻辑,为构建高质量的应用程序打下坚实的基础。希望大家通过本文的介绍,对ArkTS的基础语法有更深入的理解和掌握,在开发道路上不断前行。

相关文章:

  • 系统与网络安全------网络通信原理(5)
  • nlp面试重点
  • 算法差分详解 + 总结
  • lx2160 LSDK21.08 firmware 笔记 - 1.bl31.bin 链接脚本 bl31.ld.S 分析
  • JavaWeb 课堂笔记 —— 09 MySQL 概述 + DDL
  • 基于贝叶斯方法的地震动分析及AI拓展
  • mysql安装-MySQL MGR(Group Replication)+ ProxySQL 架构
  • 前端 react+ant design ,后端 springboot +mysql+redis 全栈项目零基础小白从服务器初始化开始部署上线超详细保姆级教程
  • Ubuntu24.04 编译 Qt5 和 Qt6 源码
  • Android Cmake构建的项目,需不需要配置指定ndk及版本
  • 动态路由, RIP路由协议,RIPv1,RIPv2
  • MarkDown 输出表格的方法
  • 信息安全管理与评估2022国赛正式卷一阶段答案截图
  • [leetcode]第445场周赛
  • 亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结
  • SSH远程访问及控制
  • 数据结构——哈希详解
  • Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(二)
  • Tkinter进度条与状态栏
  • c++ 里友元函数可以声明与定义放一块么,答案是可以,这是友元函数会自动成为内联函数
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 日月谭天丨这轮中美关税会谈让台湾社会看清了什么?
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 成都警方通报:8岁男孩落水父母下水施救,父亲遇难
  • 马上评丨火车穿村而过多人被撞身亡,亡羊补牢慢不得
  • 线下哪些商家支持无理由退货?查询方法公布