可以将解构赋值应用于已经声明的变量吗?

3
以下 TypeScript 代码有效:
const carsAndTrucks = { cars: [], trucks: [] };
const { cars, trucks } = mapDealerInventory();

carsAndTrucks.cars = cars
carsAndTrucks.trucks = trucks

console.log(carsAndTrucks)

function mapDealerInventory() {
    return {cars: [1,2], trucks:['a', 'b']}
}

但是有没有避免设置新变量来解构mapDealerInventory()返回值的方法呢?我希望这是可能的:

{ carsAndTrucks.cars, carsAndTrucks.trucks } = mapDealerInventory() 但是它会报错"Unexpected token ="

所以,如果你先声明一个对象及其属性类型,那么从返回一个包含这些属性值的对象(或数组)的函数中设置这些属性的最清晰的方法是什么?


3
如果 carsAndTrucks 只包含汽车和卡车,为什么还需要解构?直接重新赋值可能更容易。 - undefined
Object.assign(carsAndTrucks, mapDealerInventory()) - undefined
嗯,我稍微简化了一下。在这种情况下,carsAndTrucks实际上有比这两个更多的属性。 - undefined
2个回答

4

1

使用Object.assign()在对象上设置多个字段:

const { cars, trucks } = mapDealerInventory();
Object.assign(carsAndTrucks, { cars, trucks });

或者,如果您不需要 carstrucks 变量用于其他任何事情,并且 mapDealerInventory() 仅返回这两个字段:

Object.assign(carsAndTrucks, mapDealerInventory());

carsAndTrucks将会保留所有其他属性,而carstrucks将被更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接