数组及其扩展
typescript 处理支持原生的 Array、Set、Map、WeakSet、WeakMap 类型,还提供了以下扩展
- 元组(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> 表示一个元素类型为 T 的 WeakSet,T 类型需要是一个对象
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> 描述一个 WeakMap ,K 需要是一个对象