Деструктуризация и значения по умолчанию

Есть объект,

const order = {
name,
description : 'Description',
cost : 5,
currency : '',
"company manufacturer" : 'Open source',
"production date" : 'Today' };

В функции showInfo, принимающий объект для деструктуризации, необходимо вывести информацию о объекте, заполнив пустые поля значениями по умолчанию, а также создать функцию валидации в замыкании, которая будет проверять поля на пустоту и значение поля cost на целочисленность и неотрицательность

function showInfo(obj) {

Object.keys(obj).map(k => obj[k] = typeof obj[k] == 'string' ? obj[k].trim() : obj[k]);

let {name = 'Program', description : desc = 'Program calculator', cost, currency : curr = 'Rub', 'company manufacturer' : creator = 'I', 'production date' : date = 'Yesterday'} = obj;

return function() {
    Object.entries(obj).forEach(([key, value]) => {
        if (value.length == 0 && key !== 'cost') {
            console.log(`Key ${key} will get value by default`)
        }

    });

    if (typeof (obj['cost']) !== 'number' || Math.sign(obj['cost']) !== 1) {
        cost = 1;
        console.log(`Invalid cost, will set value by default`);
    }

    return [name, desc, cost, curr, creator, date];
} 
}

Несмотря на то, что поля name и currency пусты, значения по умолчанию в деструктуризации им не присваиваются. Хотя функция в замыкании выводит сообщение о том, что они пусты.

В чем причина такой ошибки? Заранее благодарю


Ответы (0 шт):