В общем, я знаю, как деконструировать простой объект в Javascript. Я также знаю, как давать значения по умолчанию для простых объектов во время деконструкции.
Например, я могу передать два разных вложенных объекта в функцию логгера. Где функция регистратора просто консоль регистрирует вложенный массив
var firstExample = { name: "foo", number: 1, myObject: { myArray: [1, 2, 3] } };
var secondExample = { name: undefined, number: undefined, myObject: { myArray: [9, 8, 7] } };
var myLogger = ({
name = "defaultName",
number = 999,
myObject: { myArray: stuff }
}) => {
console.log(`${name} ${stuff}`);
};
myLogger(firstExample); // "foo 1,2,3"
myLogger(secondExample); // "defaultName 9,8,7"
В настоящее время, однако, я борюсь с деконструкцией вложенного объекта и передачей ему значений для каждой вложенной пары ключ / значение.
Например, когда я пытаюсь добавить следующий код с использованием той же функции myLogger
, выдается ошибка TypeError.
var myLogger = ({
name = "defaultName",
number = 999,
myObject: { myArray: stuff }
}) => {
console.log(`${name} ${stuff}`);
};
var thirdExample = { name: "bar", number: 2 };
myLogger(thirdExample) // ERROR
// TypeError: Cannot destructure property `myArray` of 'undefined' or 'null'.
Как правильно написать свою функцию для деконструкции объекта, чтобы избежать этой ошибки?