Как использовать специальные символы (например, дефис) в деструктурирующем синтаксисе присваивания?
Мне любопытно, почему это кажется невозможным:
const {a, b, 'special-one'} = { a:1, b:2, 'special-one': 3 };
// output => missing : after property id
Удастся ли найти этот синтаксис, работающий в будущих версиях ES?
Спасибо за ваши огни:)
2 ответа
Решение
Переименуйте переменную в операторе destructure, вы не можете иметь переменную с дефисом в названии. Вы можете переименовать, используя синтаксис ниже, см. MDN: Назначение новым именам переменных
Свойство может быть распаковано из объекта и назначено переменной с другим именем, чем свойство объекта.
const {
a,
b,
'special-one': specialOne
} = {
a: 1,
b: 2,
'special-one': 3
};
console.log(specialOne);
special-one
не может быть именем переменной. Так что вам нужно другое имя для этого, как specialOne
, использование :
после имени ключа для нового имени переменной.
const {a, b, 'special-one':specialOne} = { a:1, b:2, 'special-one': 3 };
console.log(specialOne)
В приведенном выше случае в качестве имени ключа используется простая строка. Но если есть выражение, вам нужно использовать []
let keyName = 'special-one'
const {a, b, [keyName]:specialOne} = { a:1, b:2, 'special-one': 3 };
console.log(specialOne)