如何在Typescript中向对象动态添加新项?
我想用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
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});