Как использовать специальные символы (например, дефис) в деструктурирующем синтаксисе присваивания?

Мне любопытно, почему это кажется невозможным:

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)

Другие вопросы по тегам