问题描述
我认为我对ES6中的解构非常了解。示例:
const obj = {
foo: 'String1',bar: 'String2'
}
let { foo,bar } = obj
console.log(foo) //Prints "String1"
很简单。
但是,我有一个大对象,它具有动态名称的动态数量的属性。我希望能够自动分配它们。
示例对象:
const obj = {
a: 'String1',b: 'String2',c: 'String3',// ....
y: 'String25',z: 'String26',}
我没有声明每个变量,而是尝试:
// Instead of
// { a,b,c,d,so_on,y,z } = obj
// I try:
let { ...obj } = obj
但是出现此错误:
Identifier 'obj' has already been declared
解决方法
只要标识符与您要解构的对象的标识符不同,它就可以按照您的预期工作。
const obj = {
a: 'String1',b: 'String2',c: 'String3',// ...
y: 'String25',z: 'String26',}
const { a,b,...rest } = obj
// const a: 'String1'
// const b: 'String2'
// const rest: {
// c: string;
// ...
// y: string;
// z: string;
// }
请参见playground中的示例。