Typescript 动态更新特性值将替换整个对象

Typescript 动态更新特性值将替换整个对象,typescript,object,parameters,Typescript,Object,Parameters,我正在尝试更新我正在构建的数据存储服务,但我遇到了一个最奇怪的问题 public setOptions(params: Params): void { console.log(this._dataStore.options); // always empty here!!! for (const key of Object.keys(params)) { this._dataStore['options'][key] = params[key]; }

我正在尝试更新我正在构建的数据存储服务,但我遇到了一个最奇怪的问题

public setOptions(params: Params): void {

    console.log(this._dataStore.options); // always empty here!!!

    for (const key of Object.keys(params)) {
        this._dataStore['options'][key] = params[key];
    }

    console.log(this._dataStore.options); // parameter(s) added
}
使用URL参数的初始集合调用
setOptions()
可以工作,并且
\u数据存储。选项包含反映传入参数的属性

问题是每当我调用setOptions时,选项属性都会被新的
参数替换,而不是更新它们或添加新的内容

console.log(this._dataStore.options); // city: la  

这对我来说毫无意义,有人能帮助我理解并正确更新.options对象吗?

将它们与
对象.assign()合并。


我不确定你期望发生什么。你能用
\u dataStore.options的一些例子进一步解释一下吗?在多次调用
setOptions()
之前和之后,你是否试图将它们与现有的数据库合并?问题一点也不清楚是的,我正在尝试合并它们。我在代码
中解释了正在替换的属性,未更新或未添加
您能否举例说明在给定特定的
参数
的情况下,您预期会发生什么情况?所示代码中绝对没有任何内容会从
数据存储中删除
声明的
位置
属性
Object.assign
是要将属性合并到一个新对象中吗?另外,它给了我一个错误
TypeError:cannotconvert undefined或null to object
Target可以是一个新对象,或者如果它是现有对象,它会从源复制属性和值,如果您有这个错误,那么数据存储可能没有那个键,需要在那个实例中创建一个对象。如果您只需要提供一些示例数据就可以运行它,这会有所帮助。我们很难知道这两个对象是如何构造的HMM数据存储是这样实例化的:
private_dataStore={options:{},results:[]}好,那么您似乎需要首先检查键是否存在
for (const key of Object.keys(params)) {
    Object.assign(this._dataStore['options'][key] , params[key]);
   // or reverse arguments if applicable 
}