将项目添加到typescript映射中的数组

将项目添加到typescript映射中的数组,typescript,Typescript,我有一个JS映射,看起来像这样let mappy=new Map() 我想使用键向数组中添加项,我可以这样做: mappy.set(theKey, mappy.get(theKey).push('somevalue')); 对我来说,这似乎太过分了。如果我使用一个简单的对象,我可以很容易地 let mappy = {}; mappy[theKey] = []; ..然后稍后mappy[theKey].push('somevalue')但是这有点否定了TS的类型化对象思想 是否有任何方法可以在

我有一个JS映射,看起来像这样
let mappy=new Map()
我想使用键向数组中添加项,我可以这样做:

mappy.set(theKey, mappy.get(theKey).push('somevalue'));
对我来说,这似乎太过分了。如果我使用一个简单的对象,我可以很容易地

let mappy = {};
mappy[theKey] = [];
..然后稍后
mappy[theKey].push('somevalue')
但是这有点否定了TS的类型化对象思想


是否有任何方法可以在不首先“获取”它的情况下添加到地图中的该数组?

您可以从
地图
对象获取对该数组的引用,并向其推送额外的值。没有必要把它放回
地图
,它已经在那里了

mappy.get(钥匙)!。推(somevalue);
mappy.get(键)
之后的code>,因为TypeScript抱怨
mappy.get()
返回的值可以是
未定义的。感叹号告诉它我们确实知道该值已定义。它被称为a,并已在TypeScript 2.7中引入

检查一下


或者,您也可以使用普通对象而不是
贴图

typemymap={[K:string]:string[]};
让mappy:MyMap={};
mappy[theKey]=[];
mappy[theKey].push('somevalue');

为什么
.set()
什么?您只需
.get()
数组并
.push()。实际上,
.push()
返回一个数字—数组的新长度。因此,如果您
.set(someKey,someArray.push())
您正在将
someKey
的值设置为一个数字。谢谢。。我从那篇文章中学到了3件新东西。。这是一个好日子!!!