TLDR:如何使用解构来加速基于同一接口的另一个对象的一个对象的部分更新?
我想使用新的 ECMA2015 - 2017 JavaScript 来重构我的代码。
为简单起见,假设我有一个对象,如下所示:
export interface myObj {
name: string;
id: number;
description: string;
someBool: boolean;
anotherBool: boolean;
}
(导出界面有效,因为我正在使用 Typescript 在 Angular 中工作)。
这是旧的 es5 函数:
updateMyObj = function(oldObj, newObj) {
var someBoolSaved = oldObj.someBool;
var anotherBoolSaved = oldObj.anotherBool;
oldObj = newObj;
oldObj.someBool = someBoolSaved;
oldObj.anotherBool = anotherBoolSaved;
}
如您所见,该函数应该更新 oldObj 的某些部分,但也保留一些部分。
这是我重构代码的尝试:
updateObj(oldObj, newObj) {
let {someBool, anotherBool} = oldObj;
oldObj = newObj;
// Here is the part where I don't know how to proceed.
}
但我不知道,我现在如何将 oldObj 的布尔值分配给保存的布尔值。
一种不优雅的方式是
oldObj.someBool = someBool;
oldObj.anotherBool = anotherBool;
在这个例子中会很好。但是在我的实际任务中,这会花费很多代码行,这就是我想要重构的原因。
我只是想不出正确的语法。
我对此进行编码的尝试看起来像这样:
oldObj = {someBool, anotherBool}
但这不起作用。