迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > TypeScript >

在 TypeScript 中初始化和键入Map

作者:迹忆客 最近更新:2022/10/24 浏览次数:

使用 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);

typescript 初始化 Map

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);

typescript 初始化 Map Error

我们尝试向 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() 构造函数需要一个包含键值对嵌套数组的数组。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 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。

Pandas map() 函数详细说明

发布时间:2023/03/21 浏览次数:120 分类:Python

本教程解释了我们如何使用 Series.map()方法将 Pandas Series 的值替换为另一个值。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便