2016-06-20 1 views
5

5 개의 객체를 반환하는 함수가 있는데 그 중 4 개를 constlet을 사용하여 선언하고 싶습니다.하나 이상의 변수 유형이있는 ES6 구조 지정 할당

const { thing1, thing2, thing3, thing4, thing5 } = yield getResults(); 

나의 현재 해결 방법은 다음과 같습니다 :

const results = yield getResults(); 

const thing1 = results.thing1; 
const thing2 = results.thing2; 
const thing3 = results.thing3; 
const thing4 = results.thing4; 

let thing5 = results.thing5; 

을하지만 할당을 destructuring 것은 당신이 우아하게이 더 많은 일을 할 수 있는지 궁금 해요 내가 모든 개체 const를 사용하여 선언 원한다면 내가 할 수 있었다.

내가 볼 수있는 한 MDN 또는 stackoverflow에서이 질문에 대한 언급이 없습니다.

+3

그럼 그냥'const {thing1, ...} = results; {thing5} = 결과; – Bergi

답변

6

letconst 변수를 동시에 초기화하는 구조화를 수행 할 수 없습니다.

const results = yield getResults() 

const { thing1, thing2, thing3, thing4 } = results 

let thing5 = results.thing5 
6

당신은 여전히 ​​별도로 destructuring 사용할 수 있습니다 : const에 할당 다른 destructure 줄일 수있다 그러나

const results = yield getResults(); 
const { thing1, thing2, thing3, thing4} = results; 
let { thing5 } = results; 

를 또는,

let thing5; 
const { thing1, thing2, thing3, thing4 } = { thing5 } = yield getResults(); 

을 할 수 있지만, 그런 것 같아요 코드의 WTF/분을 줄이기 위해 오히려 피해야합니다.

+0

나는 WTF/분 코멘트가 조금 가혹하다고 생각합니다. 나는'const'가 우연한 실수와 코드 냄새를 줄이기위한 합법적 인 방법이라고 생각한다. 변수가 실제로 필요한 변수가 있다면, "변수를 모두 변수로 만드십시오"는 변수를 처리하는 무딘 도구입니다. 나는 당신의 요지를 본다 ... 나는이 문제를 완전히 피하기 위해이 글을 쓸 수도 있지만, 가능하다면 const를 사용하는 것이 현명하다. –

+0

@EthanBrown : 방금 스타일 가이드가 합리적인 이유로 중첩 된 과제에서 구조 조정을 금지한다는 것을 의미했습니다. – Bergi

관련 문제