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

前言

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

数据类型

概述

number

数值

boolean

布尔

string

字符串

undefined

一个未定义或不存在的值

null

object 

对象

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 函数生成。

    let symbol = Symbol()

    console.log(typeof symbol)

日志打印如下:

如下举例:

    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,整数溢出的问题将不复存在。

let bigint = BigInt('9999999999999')

三、枚举enum

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

默认数字(自增):

export enum EnumTest {
  ONE,
  TWO,
  THREE,
  FOUR,
}

声明字符串:

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

export enum EnumTest {
  ONE = "ONE",
  TWO = "TWO",
  THREE = "THREE",
  FOUR = "FOUR",
}

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

export enum EnumTest {
  ONE = "ONE",
  TWO = 2,
  THREE = 3,
  FOUR = 4,
}

四、任意any

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

    let test;
    test = "测试数据"
    test = 1
    test = true

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

五、未知类型unknown

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

    let test: unknown

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

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

主要区别:

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

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

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

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

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

  test(): void {

  }

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

 test() {

}

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

七、永远不存在的类型never

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

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

// 抛出异常
function error(message: string): never {
  throw new Error(message);
}

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

八、相关总结

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

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值