TypeScript Map - 包含示例的完整指南
要在 TypeScript 中定义 Map 对象,请使用泛型来设置 Map 的键和值的类型。 我们添加到 Map 的所有键值对都必须符合指定的类型,否则类型检查器会抛出错误。
// 👇️ Map with string keys and string | number values
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
map1.set('country', 'Germany');
const country = map1.get('country');
console.log(country); // 👉️ "Germany"
console.log(map1.has('name')); // 👉️ true
map1.delete('name');
console.log(map1.has('name')); // 👉️ false
console.log(map1.size); // 👉️ 2 (Map has 2 elements)
我们使用泛型来声明具有字符串键和字符串或数字值的 Map。
用于键入 Map 的语法是 -
new Map<TypeOfKeys, TypeOfValues>()
。 例如,new Map<number, string>
是一个 Map 对象,其键类型为 number,值类型为 string。
我们添加到 Map 中的所有键值对都必须符合指定的类型,否则会抛出错误。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
// ⛔️ Error: Argument of type 'boolean' is not
// assignable to parameter of type 'string | number'.ts(2345)
map1.set('country', true);
我们使用联合类型将 Map 的值设置为字符串或数字,但布尔值不是联合的成员,因此我们得到一个错误。
请注意
,我们可以通过向其传递键值对数组来使用值初始化 Map。
因为我们已经将 Map 的值键入为字符串或数字,所以当我们使用 Map.get
方法时,我们将取回字符串、数字或未定义类型的值。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
['country', 'Germany'],
]);
// 👇️ const country: string | number | undefined
const country = map1.get('country');
if (typeof country === 'string') {
console.log(country.toUpperCase());
}
country
变量可能是未定义的,因为 TypeScript 无法提前知道 Map 是否包含关键国家。
if 语句用作类型保护,因为它直接检查值的类型。 country 变量保证是 if 块中的字符串。
我们可以使用 Map.set
方法将键值对添加到 Map。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
map1.set('country', 'Germany');
console.log(map1.get('country')); // 👉️ "Germany"
console.log(map1.delete('country')); // 👉️ true
console.log(map1.has('country')); // 👉️ false
确保我们传递给 Map.set()
方法的键的类型和值的类型符合您在定义 Map 时指定的类型。
上面的代码片段展示了如何使用 Map.delete()
方法从 Map 中删除键值对。
如果 Map 对象中的元素存在且已被删除,则
Map.delete()
方法返回 true,否则返回 false。
如果 Map 中存在指定的键,则 Map.has() 方法返回 true。
我们可以使用 Map.forEach
方法在 TypeScript 中迭代 Map。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
map1.forEach((value, key) => {
console.log(value, key); // 👉️ James name, 30 age
});
for (const [key, value] of map1) {
console.log(key, value); // 👉️ name James, age 30
}
上面的代码片段显示了如何使用 Map.forEach()
方法和 for...of
循环来迭代 Map。
如果我们必须使用
break
关键字提前退出循环,则for...of
循环可能是您的首选方法。 forEach 方法不支持使用 break 关键字。
我们可能经常需要将 Map 的键或值转换为数组,因为数组有许多有用的内置方法。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
const values = Array.from(map1.values());
console.log(values); // 👉️ ['James', 30]
const keys = Array.from(map1.keys());
console.log(keys); // 👉️ ['name', 'age']
我们使用 Map.values
方法获取包含 Map 值的迭代器对象。
我们将迭代器作为唯一参数传递给 Array.from 方法。
Array.from
方法将可迭代对象转换为数组并返回新的数组实例。
我们可能需要做的另一件常见事情是检查 Map 有多少元素。 Map.size
方法返回 Map 中的元素数。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
console.log(map1.size); // 👉️ 2
map1.set('country', 'Germany');
console.log(map1.size); // 👉️ 3
如果我们需要从 Map 对象中删除所有键值对,请使用 Map.clear
方法。
const map1 = new Map<string, string | number>([
['name', 'James'],
['age', 30],
]);
map1.clear();
console.log(map1.size); // 👉️ 0
相关文章
在 Go 中声明常量 Map
发布时间:2023/04/27 浏览次数:126 分类:Go
-
Map 是可以按任何顺序排序的键值对的集合。 它为键分配值。它是计算机科学中常见的数据结构。 在本文中,我们将介绍在 Go 中声明常量映射。
在 Golang 中合并两个 Map
发布时间:2023/04/27 浏览次数:145 分类:Go
-
本篇文章介绍如何在 Golang 中合并两个 map。Golang 不提供任何内置功能来合并映射,但这可以使用 Copy 方法或遵循相应的过程来实现。 让我们试试这两种方法。
GoLang 元素为 map 的 map
发布时间:2023/04/27 浏览次数:141 分类:Go
-
本篇文章介绍如何在 Go 语言中创建 Map 的 Map。Map的Map或嵌套映射是那些键值对值也是 Map 的 Map。 在 Go 语言中可以创建Map的Map。
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 Scala 中合并两个 map,然后将具有相同键的值相加
发布时间:2023/03/24 浏览次数:163 分类:编程语言
-
本文展示了在 Scala 中合并两个 map 然后将具有相同键的值相加的不同方法
Pandas map() 函数详细说明
发布时间:2023/03/21 浏览次数:120 分类:Python
-
本教程解释了我们如何使用 Series.map()方法将 Pandas Series 的值替换为另一个值。