Получение ошибки линтера "Неожиданный токен =" с назначением деструктурирования ранее объявленных переменных - PullRequest
0 голосов
/ 21 октября 2019
let data = []
let count, meta
if (req.params.id === 'count') {
  // get count only
} else {
  { data, count } = await myModel.find(filter, options)
  meta = { count }
}

выдает ошибку linter: «Ошибка синтаксического анализа: неожиданный токен =» в назначении деструктурирования. Это просто настройка в конфигурации linter, которую мне нужно изменить?

Я могу избавиться от ошибки, используя скобки, но зачем это нужно?

({ data, count } = await myModel.find(filter, options))

1 Ответ

1 голос
/ 21 октября 2019

Любой оператор, начинающийся с { ... }, всегда будет иметь в скобках последовательность, анализируемую как блок кода, а не как объект (включая выражение объекта деструктуризации).

MDN уточняет этот точный случай в своем документация по деструктурированию :

var a, b;

({a, b} = {a: 1, b: 2});

Примечания: Скобки ( ... ) вокруг оператора присваивания требуются при использовании буквального присваивания деструктурирования объекта без объявления.

{a, b} = {a: 1, b: 2} не является допустимым автономным синтаксисом, поскольку {a, b} в левой части считается блоком, а не литералом объекта.

Однако ({a, b} = {a: 1, b: 2}) являетсядопустимо, так как var {a, b} = {a: 1, b: 2}

Вашему выражению ( ... ) должна предшествовать точка с запятой, или оно может использоваться для выполнения функции в предыдущей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...