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

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

const {a, b, 'special-one'} = { a:1, b:2, 'special-one': 3 };
// output => missing : after property id

Можно ли будет найти этот синтаксис, работающий в будущих версиях ES?

Спасибо за ваши огни:)

Ответы [ 2 ]

3 голосов
/ 05 июня 2019

Переименуйте переменную в операторе destructure, у вас не может быть переменной с дефисом в имени. Вы можете переименовать, используя синтаксис ниже, см. MDN: Назначение новым именам переменных

Свойство можно распаковать из объекта и присвоить переменной с именем, отличным от свойства объекта.

const {
  a,
  b,
  'special-one': specialOne
} = {
  a: 1,
  b: 2,
  'special-one': 3
};

console.log(specialOne);
3 голосов
/ 05 июня 2019

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)
...