在 TypeScript 中初始化和键入Map
使用 Map()
构造函数在 TypeScript 中初始化 Map,例如 const map1: Map<string, string> = new Map([['name', 'Tom']])
。 构造函数接受一个包含键值对嵌套数组的数组,其中第一个元素是键,第二个元素是值。
// ✅ 用数组初始化 Map
// 👇️ const map1: Map<string, string>
const map1: Map<string, string> = new Map([
['name', 'Tom'],
['country', 'Chile'],
]);
// 👇️ {'name' => 'Tom', 'country' => 'Chile'}
console.log(map1);
// ✅ 用对象初始化 Map
const obj = { name: 'Tom', country: 'Chile' };
const map2 = new Map<string, string>(Object.entries(obj));
// 👇️ {'name' => 'Tom', 'country' => 'Chile'}
console.log(map2);
Map()
构造函数接受一个数组,其元素是键值对。
我们在初始化
Map
时传递给 Map 泛型的第一种类型是键,第二种是值。
我们在示例中创建了一个具有字符串类型的键和值的 Map。
第一个示例展示了如何使用键值对数组初始化 Map,第二个示例展示了如何从对象创建 Map。
这是一个示例,我们将 Map 中的键的类型设置为字符串,将值的类型设置为 string[]
。
// 👇️ const map1: Map<string, string[]>
const map1: Map<string, string[]> = new Map([
['colors', ['blue', 'red', 'green']],
['languages', ['english', 'spanish', 'german']],
]);
// 👇️ ['blue', 'red', 'green']
console.log(map1.get('colors'));
map1.forEach((value, key) => {
console.log(value, key);
});
// ✅ 检查 Map 中是否存在键
console.log(map1.has('colors')); // 👉️ true
// ✅ 在 Map 中设置新键
map1.set('countries', ['UK', 'Spain', 'Germany']);
代码片段显示了 Map 对象实现的一些方法。
现在我们已经将 Map 中值的类型设置为 string[]
,我们将无法在 Map 中设置不同类型的值。
// 👇️ const map1: Map<string, string[]>
const map1: Map<string, string[]> = new Map([
['colors', ['blue', 'red', 'green']],
['languages', ['english', 'spanish', 'german']],
]);
// ⛔️ Error: Argument of type 'number' is not
// assignable to parameter of type 'string[]'.
map1.set('age', 30);
我们尝试向 Map 添加一个值为 number 的新元素,但 TypeScript 出错了。
请注意
,我们不必在创建 Map 时向其添加键值对。
我们可以稍后在代码中初始化一个空 Map,设置其类型并添加键值对。
// 👇️ const map1: Map<string, string[]>
const map1: Map<string, string[]> = new Map([]);
map1.set('colors', ['blue', 'red', 'green']);
map1.set('languages', ['english', 'spanish', 'german']);
// 👇️ {'colors' => ['blue', 'red', 'green'],
// 'languages' => ['english', 'spanish', 'german']
// }
console.log(map1);
我们可能经常需要做的事情是将对象转换为地图。 我们可以使用 Object.entries()
方法从对象创建 Map。
Object.entries
方法返回一个二维数组,其中嵌套数组包含 2 个元素 - 键和值。
const obj = { name: 'Tom', country: 'Chile' };
// 👇️ [['name', 'Tom'], ['country', 'Chile']]
console.log(Object.entries(obj));
// 👇️ const map2: Map<string, string>
const map2 = new Map<string, string>(Object.entries(obj));
// 👇️ {'name' => 'Tom', 'country' => 'Chile'}
console.log(map2);
这是一个完美的匹配,因为 Map()
构造函数需要一个包含键值对嵌套数组的数组。
相关文章
在 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 的值替换为另一个值。