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,其他的数据类型大家作为一个简单的了解即可。

相关推荐
程序员潘Sir15 分钟前
鸿蒙应用开发从入门到实战(六):ArkTS声明式UI和组件化
harmonyos·鸿蒙
黄林晴24 分钟前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我32 分钟前
flutter 之真手势冲突处理
android·flutter
法的空间1 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止1 小时前
深入解析安卓 Handle 机制
android
恋猫de小郭1 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
jctech1 小时前
这才是2025年的插件化!ComboLite 2.0:为Compose开发者带来极致“爽”感
android·开源
用户2018792831671 小时前
为何Handler的postDelayed不适合精准定时任务?
android
叽哥2 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
Cui晨2 小时前
Android RecyclerView展示List<View> Adapter的数据源使用View
android