如何在Typescript中向对象动态添加新项?

如何在Typescript中向对象动态添加新项?,typescript,Typescript,我想用Typescript中的上述函数添加一些新参数,但我在设置对象的键时遇到了一个问题。 预期回报应为: var nodeRefMap = {}; function addNodeRef(key: String, item: Object){ console.log("Before:"); console.log(nodeRefMap); nodeRefMap = Object.assign({key: item}, nodeRef

我想用Typescript中的上述函数添加一些新参数,但我在设置对象的键时遇到了一个问题。 预期回报应为:

var nodeRefMap = {};
function addNodeRef(key: String, item: Object){
       console.log("Before:");
       console.log(nodeRefMap);
       nodeRefMap = Object.assign({key: item}, nodeRefMap);
       console.log("After:");
       console.log(nodeRefMap);
}
addNodeRef("123",{});
addNodeRef("345",{});
然而,实际结果是:

{
   "123": {},
   "345": {},
}

要实现这一点,我需要做哪些更改?

代码的主要问题是您没有在此处传递字符串的类型,您应该将函数的输入参数从:
(key:string,item:Object)
更改为
(key:string,item:Object)
。这样就可以声明输入参数的类型。另外
nodeRefMap=Object.assign({},{[key]:item})您应该以这种方式分配

下面的代码工作正常

{
   "key": {},
}

这不是特定于typescript的问题。在Object.assign中,需要使用
{[key]:item}
。方括号指示js使用key的值,而不是单词key。因为这是一个类型脚本问题,所以nodeRefMap的类型应该是
记录
let nodeRefMap:{[key: string]: object};
function addNodeRef(key: string, item: object){
       console.log("Before:");
       console.log(nodeRefMap);
       nodeRefMap = Object.assign({}, {[key]: item});
       console.log("After:");
       console.log(nodeRefMap);
}
addNodeRef("123",{"a":1});
addNodeRef("345",{"b":2});