模式切换
Map 对象
TypeScript 中的 Map 对象是一个键值对的集合,它类似于 JavaScript 中的 Map 对象。Map 对象保存键值对,并记住键的原始插入顺序。任何值(对象或原始值)都可以作为一个键或一个值。
Map 相关的函数与属性:
- map.clear():移除 Map 对象的所有键/值对 。
- map.set():设置键值对,返回该 Map 对象。
- map.get():返回键对应的值,如果不存在,则返回 undefined。
- map.has():返回一个布尔值,用于判断 Map 中是否包含键对应的值。
- map.delete():删除 Map 中的元素,删除成功返回 true,失败返回 false。
- map.size:返回 Map 对象键/值对的数量。
- map.keys():返回一个 Iterator 对象, 包含了 Map 对象中每个元素的键 。
- map.values():返回一个新的 Iterator 对象,包含了 Map 对象中每个元素的值 。
在 TypeScript 中使用 Map 对象时,你可以指定键和值的类型,以增加类型安全性。下面是一个使用 TypeScript Map 对象的简单示例:
typescript
// 创建一个 Map,指定键和值的类型
let map: Map<string, number> = new Map<string, number>();
// 添加键值对
map.set('apple', 5);
map.set('banana', 10);
map.set('cherry', 20);
// 获取值
let appleCount = map.get('apple'); // appleCount 的类型是 number | undefined
if (appleCount !== undefined) {
console.log(`Apples: ${appleCount}`);
}
// 遍历 Map
for (let [key, value] of map) {
console.log(`Key: ${key}, Value: ${value}`);
}
// 检查 Map 中是否包含某个键
if (map.has('banana')) {
console.log('Banana is in the map.');
}
// 删除键值对
map.delete('banana');
// 清空 Map
map.clear();
// 检查 Map 是否为空
if (map.size === 0) {
console.log('The map is empty.');
}
在这个例子中,我们创建了一个 Map 对象,其中键是字符串类型,值是数字类型。我们使用 set 方法添加键值对,使用 get 方法根据键获取值,使用 has 方法检查 Map 中是否存在某个键,使用 delete 方法删除键值对,以及使用 clear 方法清空整个 Map。
注意,当你使用 get 方法从 Map 中获取值时,返回的类型是 value 的类型或 undefined,因为如果该键不存在于 Map 中,get 方法会返回 undefined。
TypeScript 的类型推断也可以用于 Map 对象,如果你不提供泛型参数,TypeScript 会根据赋值操作来推断键和值的类型。
typescript
let myMap = new Map();
myMap.set('key1', 'value1');
myMap.set(1, 'value2');
// TypeScript 会推断出 myMap 的类型是 Map<string | number, string>