Skip to content
大纲

数组及其扩展

typescript 处理支持原生的 ArraySetMapWeakSetWeakMap 类型,还提供了以下扩展

  • 元组(Tuple)类型
  • ReadonlyArray<T>
  • ReadonlySet<T>
  • ReadonlyMap<T>

Tuple

说明:

  • 元组类型用于描述一个已知元素数量和类型的数组,各元素类型不必相同
  • 当访问越界元素时,会使用联合类型替代

示例

ts
let tuple: [number, string] = [7, "7"];
tuple[2] = "lazyneko";
// tuple[3] = true; // Error,这里将使用联合类型 number|string 进行判断

Array

可以使用两种方式描述数组:

  • 在元素类型后面添加 [] 表示由此类型元素组成的一个数组
  • 使用数组泛型 Array<T> 表示元素类型为 T 的数组

示例:

ts
let arr1: number[] = [7, 7, 7];
let arr2: Array<string> = ["7", "7", "7"];

ReadonlyArray

说明:使用 ReadonlyArray<T> 表示元素类型为 T 的只读数组,数组创建后无法修改

示例:

ts
const array: ReadonlyArray<number> = [7, 7, 7];

Set

说明:使用 Set<T> 表示一个元素类型为 T 的集合

示例:

ts
const set: Set<number> = new Set([1, 2, 3]);
set.add(4);

ReadonlySet

说明:使用 ReadonlySet<T> 表示一个元素类型为 T 的只读集合,集合创建后无法修改

示例:

ts
const set: ReadonlySet<number> = new Set([1, 2, 3]);

WeakSet

说明:使用 WeakSet<T> 表示一个元素类型为 TWeakSetT 类型需要是一个对象

Map

说明:使用 Map<K, V> 表示一组类型为 K 的元素映射到类型为 V 的元素的字典

示例:

ts
const map: Map<string, number> = new Map([
  ["a", 1],
  ["b", 2],
]);
map.set("c", 3);

ReadonlyMap

说明:使用 ReadonlyMap<K, V> 表示一组类型为 K 的元素映射到类型为 V 的元素的字典,字典创建后无法修改

示例:

ts
const map: ReadonlyMap<string, number> = new Map([
  ["a", 1],
  ["b", 2],
]);

WeakMap

说明:使用 WeakMap<K, V> 描述一个 WeakMapK 需要是一个对象