2016-06-20 11 views
5

Ho una funzione che restituisce 5 oggetti, e vorrei dichiararne 4 usando const e 1 di loro usando let. Se avessi voluto tutti gli oggetti dichiarati utilizzando const ho potuto fare:Assegnazione destrutturazione ES6 con più di una variabile tipo

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

mia soluzione attuale è:

const results = yield getResults(); 

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

let thing5 = results.thing5; 

Ma mi chiedo se destrutturazione assegnazione ti permette di fare questo più elegante.

Nessuna menzione di questa domanda su MDN o su stackoverflow, per quanto posso vedere.

+3

Beh, basta fare 'const {thing1, ...} = risultati; let {thing5} = risultati; '? – Bergi

risposta

6

Non è possibile eseguire una distruzione che inizializza contemporaneamente le variabili let e const. Tuttavia le assegnazioni a const possono essere ridotti ad un altro destrutturare:

const results = yield getResults() 

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

let thing5 = results.thing5 
6

È comunque possibile utilizzare la destrutturazione separatamente:

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

In alternativa, è possibile fare

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

ma credo che dovrebbe piuttosto essere evitato per ridurre il WTF/minuto del tuo codice.

+0

Penso che il commento del WTF/minuto sia un po 'duro. Sento che 'const's è un modo piuttosto legittimo di ridurre gli errori accidentali e gli odori del codice. Se c'è qualcosa qui che ha davvero bisogno di essere una variabile mutabile, penso che "renderli tutte le variabili" sia un modo semplice per gestirlo. Vedo il tuo punto di vista, anche se ... Avrei potuto scriverlo per evitare del tutto il problema, ma lo sviluppatore qui è saggio usare le Sense quando possibile. –

+0

@EthanBrown: intendevo solo che qualsiasi guida allo stile avrebbe proibito la destrutturazione in compiti nidificati per una buona ragione. – Bergi

Problemi correlati