是否可以将变量解构为已声明的变量?

时间:2018-06-25 10:24:20

标签: javascript typescript javascript-objects destructuring

以下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() 但出现错误“意外令牌=“

因此,如果您首先声明一个具有其属性类型的对象,那么从函数中设置这些属性(在对象(或数组)中返回它们的值)的最干净方法是什么?

2 个答案:

答案 0 :(得分:1)

这应该有效:

({ cars, trucks } = carsAndTrucks)

PL也会看到这个答案

How to destructure an object to an already defined variable?

答案 1 :(得分:0)

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

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

或者,如果不需要其他任何变量,carstrucks,而mapDealerInventory()仅返回以下两个字段:

Object.assign(carsAndTrucks, mapDealerInventory());

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