HarmonyOS开发:ArkTs常见数据类型(二)

前言

上篇文章,对前6中数据类型做了简单的解析,今天我们继续后面的概述,关于数据类型,没有过多的详细拓展,至于部分数据类型的操作,在以后的文章里再做详细的介绍。

数据类型 概述
Symbol 独一无二的值
bigint 任意大的整数
enum 枚举
any 任意
unknown 未知类型
void 没有任何返回值的类型
never 永远不存在的类型

本篇的文章大致内容如下:

1、独一无二的值Symbol

2、任意大的整数bigint

3、枚举enum

4、任意any

5、未知类型unknown

6、没有任何返回值的类型void

7、永远不存在的类型never

8、相关总结

一、独一无二的值Symbol

Symbol是 ES6 新增的一种基本数据类型,它用来表示独一无二的值,通过 Symbol 函数生成。

TypeScript 复制代码
    let symbol = Symbol()

    console.log(typeof symbol)

日志打印如下:

如下举例:

TypeScript 复制代码
    let s1 = Symbol("AbnerMing")
    let s2 = Symbol("AbnerMing")

    console.log("是否相等:" + (s1 === s2))

日志打印如下:

从上边的判断我们可以看出,Symbol会返回一个独一无二的值,这个值和任何一个值都不等,虽然我们传入的标识字符串都是"AbnerMing",但是确实两个不同的值,可以理解为我们每一个人都是独一无二的,虽然可以有相同的名字,但是人还是不同的。

二、任意大的整数bigint

ArkTs中可以用 Number 表示的最大整数为 2^53 - 1,可以写为 Number.MAX_SAFE_INTEGER,但是如果超过了这个界限,可以用 BigInt来表示,它可以表示任意大的整数,使用BigInt,整数溢出的问题将不复存在。

TypeScript 复制代码
let bigint = BigInt('9999999999999')

三、枚举enum

目前在ArkTs中只提供了基于数字和基于字符串的枚举,使用enum关键字定义枚举。

默认数字(自增):

TypeScript 复制代码
export enum EnumTest {
  ONE,
  TWO,
  THREE,
  FOUR,
}

声明字符串:

在字符串枚举中,每个成员都必须使用字符串字面或另一个字符串枚举成员进行常量初始化。

TypeScript 复制代码
export enum EnumTest {
  ONE = "ONE",
  TWO = "TWO",
  THREE = "THREE",
  FOUR = "FOUR",
}

除了数字和字符串之外,枚举还支持数字和字符串混合:

TypeScript 复制代码
export enum EnumTest {
  ONE = "ONE",
  TWO = 2,
  THREE = 3,
  FOUR = 4,
}

四、任意any

上篇文章提到过,如果你声明了一个变量,而未确定类型,那么它就是一个any,当一个类型为any时,那么它是可以赋值任何类型的数据的。

TypeScript 复制代码
    let test;
    test = "测试数据"
    test = 1
    test = true

有时候,某些变量的值在编程阶段还不清楚,不希望类型检查器对这些值进行检查而是直接通过编译阶段的检查,就可以使用 any 类型来标记这些变量。

五、未知类型unknown

通过any我们需要清楚,所有数据类型都可以定义为 any。但是也可以都定义为 unknown,如下的代码,其实和any是一致的。

TypeScript 复制代码
    let test: unknown

    test = "测试数据"
    test = 100
    test = true

虽然说unknown和any有一定的共通之处,但是还是有着本质的区别的。

主要区别:

1、unknown类型只能赋值给any和unknown类型,any类型太灵活,不安全。

2、any类型可以赋值给任意类型。

如下的赋值就会出现错误,在any类型中是不会的。

六、没有任何返回值的类型void

当一个函数没有返回值时,通常其返回值会声明为 void 类型。

TypeScript 复制代码
  test(): void {

  }

一般无返回值,我们也可以省略void。

TypeScript 复制代码
 test() {

}

当然了,也可以声明给一个变量,但是仅仅适用于undefined 和 null,其他类型数据会报错。

七、永远不存在的类型never

never类型在开发中很少会遇到,它是任何类型的子类型,可以赋值给任何类型,但是,有一点需要知道,never是没有子类型的。

never类型一般是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型,如下举例所示:

TypeScript 复制代码
// 抛出异常
function error(message: string): never {
  throw new Error(message);
}

//无返回值
function infiniteLoop(): never {
  while (true) {}
}

八、相关总结

日常的开发中最常用的数据类型有:number,boolean,string,object,enum,undefined,null,其他的数据类型大家作为一个简单的了解即可。

相关推荐
大雷神3 小时前
鸿蒙安卓前端中加载丢帧:ArkWeb分析
harmonyos
技术liul6 小时前
使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本1)
android·stm32·电脑
_祝你今天愉快8 小时前
Android FrameWork - 开机启动 & Init 进程 初探
android
2501_916007478 小时前
iOS App 上架实战 从内测到应用商店发布的全周期流程解析
android·ios·小程序·https·uni-app·iphone·webview
TimeFine8 小时前
Android 邮件发送日志
android
杨过过儿8 小时前
【Task02】:四步构建简单rag(第一章3节)
android·java·数据库
Wgllss9 小时前
Kotlin 享元设计模式详解 和对象池及在内存优化中的几种案例和应用场景
android·架构·android jetpack
小小小小小星9 小时前
鸿蒙开发状态管理与工程化关键信息通俗解释及案例汇总
harmonyos
奶糖不太甜9 小时前
鸿蒙开发问题之鸿蒙弹窗:方法论与技术探索
harmonyos