Первоначально опубликовано в https://varundey.me/blog/destructuring-and-default-values/
Разрушение, представленное в JavaScript ES6, является изящным трюком для выкупа свойств непосредственно из объекта в качестве переменных.
const obj = { a:1, b:2, c:3 }; const {a, b, c} = obj; console.log(a, b, c); // 1 2 3
Destructure и назначить значения по умолчанию – наивный путь
Но что Если вам нужно сделать проверку проверки на ваши деструктурированные свойства перед выполнением какой -либо операции
const {a, b, c} = obj; if(typeof a === 'undefined'){ // assign a to something } if(typeof b === 'undefined'){ // assign b to something } if(typeof c === 'undefined'){ // assign c to something } // start the actual work
Destructure и назначить значения по умолчанию – javaScript Way
Хотя это работает отлично, но это скучно и избыточно. Что если бы мы могли использовать значения по умолчанию (точно так же, как аргументы по умолчанию в функциях) прямо во время разрушения объектов, чтобы наше распакованное свойство никогда не было неопределенное
Анкет
const obj = {a: 1, b: 2}; const { a = 'foo', b = 'bar', c = 'baz', } = obj; console.log(a, b, c); // 1 2 baz
Легко, верно? Вам просто нужно назначить значения как и когда вы их распаковываете.
Destructure, переименование и назначение значений по умолчанию
Аккуратный! Но что, если мы хотим переименовать параметр и Установить значение по умолчанию? Обращать внимание.
const obj = {a: 1, b: 2}; const { a: A="foo", b: B="bar", c: C="baz" } = obj; console.log(A, B, C); // 1 2 baz
Сбивает с толку? Бьюсь об заклад. Вот шаги к этому.
- Сначала мы разрушаем свойства объекта
const {a, b, c} = obj;
- Далее мы назначаем переменные этим свойствам
const {a: A, b: B, c: C} = obj;
- После этого назначьте значение по умолчанию как то, как мы это сделали в предыдущем примере
const {a: A="foo", b: B="bar", c: C="baz"} = obj;
И там у тебя это есть. Добавление значений по умолчанию правильно во время распаковки объектов.
Предостережения
Обратите внимание, что деструкция со значением по умолчанию работает только тогда, когда нет свойств для распаковки в объекте, то есть свойство неопределенное
Анкет Это означает, что JavaScript относится к NULL
, ложный
, 0
или другие фальшивые значения как действительное свойство и не присваивают им значение по умолчанию.
const obj = {a: null, b: false, c: 0}; const { a = 1, b = 2, c = 3, d = 4 } = obj; console.log(a, b, c, d); // null false 0 4
Я надеюсь, что это было информативно и поможет вам, когда вам нужно сделать что -то подобное. Дайте мне знать, что вы думаете об этом посте в комментариях ниже. ✌
Оригинал: “https://dev.to/varundey/destructuring-javascript-objects-with-default-value-2765”