将一个对象的属性分配给打字稿中的另一个对象

时间:2020-11-12 10:38:07

标签: javascript typescript

我有两个具有许多属性的对象。我只想将属性从一个对象复制到另一个对象。

这是对象接口:

interface Settings {
  locale: string;
  currency: string;
  style: string;
  isDark: boolean;
  // There are more fields here
}

两个对象的定义如下:

const settings: Settings = {/*assign all fields here*/}
const settingsChange: Partial<Settings> = {/*change some fields*/}

现在我需要将settingsChange中的字段分配给settings,我正试图像在javascript中那样进行操作

Object.entries(settingsChange).forEach(([key, value])=>{
  settings[key] = settingsChange[key] || settings[key]
})

这是我收到的打字稿掉毛错误:

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Settings'.
No index signature with a parameter of type 'string' was found on type 'Settings'.ts(7053)

我该如何解决?我知道Object.assign可以工作,但是Object.entries给了我更大的自由,可以应用所需的任何逻辑。

1 个答案:

答案 0 :(得分:0)

GET http://localhost:5000/get_users net::ERR_CONNECTION_REFUSED
Error: Network Error
   at: createError(createError.js:16)
   at: XMLHttpRequest.handleError (xhr.js:91)

如果需要对值做一些逻辑,则可以执行以下操作:

settings = {
  ...settings,
  ...settingsChange
};