Impostare valori di default in Javascript con default-composer

Mattepuffo's logo
Impostare valori di default in Javascript con default-composer

Impostare valori di default in Javascript con default-composer

default-composer è una piccola libreria per Javascript che ci consente di impostare dei valori di defaults in oggetti, anche se hanno altri oggetti innestati.

Ovviamente possiamo ottenere lo stesso risultato usando lo spread-operator o Object.assign.

Ma la libreria ci da un codice più pulito.

Partiamo da un esempio con lo spread-operator:

const defaults = {
    nome: 'Matteo',
    indirizzo: {
        via: 'Via delle vie 90',
        citta: 'Bho',
        zip: '00100',
    },
    email: 'ema@email.it',
    sports: ['running', 'climbing'],
}

const originale = {
    nome: '',
    indirizzo: {
        via: '',
        citta: '',
        zip: '',
    },
    email: '',
    sports: [],
    note: 'note',
}

const finale = {
    ...defaults,
    ...originale,
    nome: originale.nome || defaults.nome,
    indirizzo: {
        ...defaults.indirizzo,
        ...originale.indirizzo,
        via: originale.indirizzo.via || defaults.indirizzo.via,
        citta: originale.indirizzo.citta || defaults.indirizzo.citta,
        zip: originale.indirizzo.zip || defaults.indirizzo.zip,
    },
    email: originale.email || defaults.email,
    sports: originale.sports.length ? originale.sports : defaults.sports,
}

console.log(finale);

Con Object.assign sarebbe abbastanza simile.

Adesso installiamo la libreria:

npm install default-composer

E modifichiamo l'esempio sopra:

const {defaultComposer} = require("default-composer");

const defaults = {
    nome: 'Matteo',
    indirizzo: {
        via: 'Via delle vie 90',
        citta: 'Bho',
        zip: '00100',
    },
    email: 'ema@email.it',
    sports: ['running', 'climbing'],
}

const originale = {
    nome: '',
    indirizzo: {
        via: '',
        citta: '',
        zip: '',
    },
    email: '',
    sports: [],
    note: 'note',
}

const finale = defaultComposer(defaults, originale);

console.log(finale);

Come vedete ci pensa la libreria a fare il lavoro sporco.

Enjoy!


Condividi

Commentami!