常见类型 -- Typescript基础篇(3)

1,251 阅读2分钟

Bigint

3.2开始,ts内置了bigint类型来支持理论上任意大的整数类型。使用该类型,需要指定配置文件的targetES2020以上,如ESNEXT

{
  "compilerOptions": {
    "target": "ESNEXT"
  }
}

使用bigint类型的变量有两个方式:使用bigint类型标识,并在数字结尾加n;或者使用Bigint()函数。

const bigintVal: bigint = 1n;
const bigintVal2: bigint = BigInt(10);

注意虽然上一节讲到的numberbigint都是代表数字,但是两者完全不同。

const bigintVal: bigint = 1n;
const numVal1 = 1;

// Cannot assign to 'bigintVal' because it is a constant
bigintVal = numVal1;

// false
bigintVal === numVal1;

数组(Array)

数组是js中十分常见的数据类型,在ts中对数组的定义可以是:

  • 类型 + 方括号
  • 使用Array泛型(泛型章节对此有更详细的说明)
const arr1: string[] = ["str1", "str2"];
const arr2: Array<string> = ["str1", "str2"];

// 二维数组
const arr3: string[][] = [
  ["str1", "str2"],
  ["str3", "str4"],
];
const arr4: Array<Array<string>> = [
  ["str1", "str2"],
  ["str3", "str4"],
];

指定了类型的数组不允许出现其他类型的变量,如string[]类型的数组中不允许出现number类型变量

数组声明还有一个只读数组,即是用readonly关键字或者 ReadonlyArray泛型声明的数组,只读数组在创建后不能做任何修改,并且不能把一个只读数组的变量赋值给一个常规数组

const a: readonly number[] = [1, 2, 3];

const arr: ReadonlyArray<string> = [];

// error
arr.push(1);
arr.length = 1;
arr[0] = "1";

// string[] Cannot assign to 'arr1' because it is a constant
const arr1: string[] =arr;

元组(Tuple)

元组和数组的形式非常相似,相当于是指定长度和变量类型的数组,且各个元素的类型不必相同。

const tuple1: [string, number, boolean] = ["str", 1, true];

元组的各个元素必须和指定类型一致,并且元素个数不能多也不能少,必须严格按照声明类型,否则会报错。