上篇文章,对前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是 ES6 新增的一种基本数据类型,它用来表示独一无二的值,通过 Symbol 函数生成。
let symbol = Symbol()
console.log(typeof symbol)
日志打印如下:
如下举例:
let s1 = Symbol("AbnerMing")
let s2 = Symbol("AbnerMing")
console.log("是否相等:" + (s1 === s2))
日志打印如下:
从上边的判断我们可以看出,Symbol会返回一个独一无二的值,这个值和任何一个值都不等,虽然我们传入的标识字符串都是"AbnerMing",但是确实两个不同的值,可以理解为我们每一个人都是独一无二的,虽然可以有相同的名字,但是人还是不同的。
ArkTs中可以用 Number 表示的最大整数为 2^53 - 1,可以写为 Number.MAX_SAFE_INTEGER,但是如果超过了这个界限,可以用 BigInt来表示,它可以表示任意大的整数,使用BigInt,整数溢出的问题将不复存在。
let bigint = BigInt('9999999999999')
目前在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时,那么它是可以赋值任何类型的数据的。
let test;
test = "测试数据"
test = 1
test = true
有时候,某些变量的值在编程阶段还不清楚,不希望类型检查器对这些值进行检查而是直接通过编译阶段的检查,就可以使用 any 类型来标记这些变量。
通过any我们需要清楚,所有数据类型都可以定义为 any。但是也可以都定义为 unknown,如下的代码,其实和any是一致的。
let test: unknown
test = "测试数据"
test = 100
test = true
虽然说unknown和any有一定的共通之处,但是还是有着本质的区别的。
1、unknown类型只能赋值给any和unknown类型,any类型太灵活,不安全。
2、any类型可以赋值给任意类型。
如下的赋值就会出现错误,在any类型中是不会的。
当一个函数没有返回值时,通常其返回值会声明为 void 类型。
test(): void {
}
一般无返回值,我们也可以省略void。
test() {
}
当然了,也可以声明给一个变量,但是仅仅适用于undefined 和 null,其他类型数据会报错。
never类型在开发中很少会遇到,它是任何类型的子类型,可以赋值给任何类型,但是,有一点需要知道,never是没有子类型的。
never类型一般是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型,如下举例所示:
// 抛出异常
function error(message: string): never {
throw new Error(message);
}
//无返回值
function infiniteLoop(): never {
while (true) {}
}
日常的开发中最常用的数据类型有:number,boolean,string,object,enum,undefined,null,其他的数据类型大家作为一个简单的了解即可。