在 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()
构造函数需要一个包含键值对嵌套数组的数组。
相关文章
Pandas map()
发布时间:2024/04/24 浏览次数:1652 分类:Python
-
本教程解释了我们如何使用 Series.map()方法将 Pandas Series 的值替换为另一个值。
Pandas apply, map 和 applymap 的区别
发布时间:2024/04/21 浏览次数:135 分类:Python
-
本教程解释了 Pandas 中 apply()、map()和 applymap()方法的区别。
在 JavaScript 中遍历 Map
发布时间:2024/03/21 浏览次数:62 分类:JavaScript
-
JavaScript 允许借助键值对数据结构(即 Map)遍历对象。迭代过程以多种方式运行,例如在 ES6 之前的格式中,我们逐个遍历每个元素、for of 和 for 每个约定。
JavaScript 中的 Map 索引
发布时间:2024/03/20 浏览次数:210 分类:JavaScript
-
JavaScript map 方法很容易实现,我们将讨论它的不同参数,以及它们在不同场景中的使用方式。
如何在 Matplotlib 中绘制数据列表的直方图
发布时间:2024/02/04 浏览次数:178 分类:Python
-
本教程介绍了如何使用 plt.hist()方法从数据列表中绘制直方图。我们可以使用 plt.hist()方法从数据列表中绘制直方图。
C# 中等效的 C++ Map<T1, T2>
发布时间:2024/02/01 浏览次数:147 分类:编程语言
-
可以使用 C# 中的 SortedDictionary
和 Dictionary 类代替 C++ 中的 map 。
C# 中等效的 C++ Map<T1, T2>
发布时间:2024/01/20 浏览次数:187 分类:编程语言
-
可以使用 C# 中的 SortedDictionary
和 Dictionary 类代替 C++ 中的 map 。
在 C++ 中按值对 map 进行排序
发布时间:2024/01/02 浏览次数:108 分类:C++
-
本文介绍如何在 C++ 中按值对映射进行排序。本文将演示有关如何使用 C++ 中的值对 map 进行排序的多种方法。使用 std::vector 和 std::sort 算法在 C++ 中按值对 map 元素进行排序