Jshint: ES6 - Некорректный синтаксический анализ оператора распространения в объектных литералах

Созданный на 21 янв. 2015  ·  11Комментарии  ·  Источник: jshint/jshint

Похоже, что даже с esnext:true JSHint запутывается, используя оператор распространения в литерале объекта. Следующий код:

/* jshint esnext:true */
var first = { a: 'A', b: 'B' };
var second = { ...first, a: 'Different A'};

выдает эти ошибки:

Пять предупреждений
3 Ожидалось, что '}' совпадет с '{' из строки 3, а вместо этого увидит '...'.
3 Отсутствует точка с запятой.
3 Ожидал присвоения или вызова функции, а вместо этого увидел выражение.
3 Отсутствует точка с запятой.
3 Ожидается '(конец)', а вместо него отображается ':'.
Одна неопределенная переменная
3 а
Одна неиспользуемая переменная
3 секунды

Самый полезный комментарий

Оператор распространения теперь является предложением уровня 3 (https://github.com/tc39/proposals). Есть ли шанс, что эту проблему можно будет открыть повторно?

Все 11 Комментарий

SpreadElement не разрешен в ObjectLiteral https://people.mozilla.org/~jorendorff/es6-draft.html#sec -array-initializer.

О, слава богу.

Object Rest / Spread Properties - это предложение ES7.

@sebmck Спасибо, я хорошо знаком с этим документом, и я также знаю, что это предложение уровня 0: https://github.com/tc39/ecma262

@rwaldron Я подумал, просто хотел предоставить дополнительный контекст для других.

Оператор распространения теперь является предложением уровня 3 (https://github.com/tc39/proposals). Есть ли шанс, что эту проблему можно будет открыть повторно?

Согласитесь, это следует открыть заново. Оператор распространения объекта очень важен для реакции / сокращения. Также eslint поддерживает это. К сожалению, нам придется преобразовать наш устаревший код для использования eslint перед включением поддержки оператора распространения, если это не исправлено в jshint.

+1

Код React / Redux часто использует это. Пожалуйста, поддержите его (по крайней мере, с опцией типа "esversion": 7). Спасибо!

+1
Кажется, что странные объекты не учтены.

Что ж, это еще не официально стандартизировано. Но, вероятно, так и будет.

Этот вопрос был зарегистрирован в то время, когда синтаксис только предлагался. JSHint имеет формальную политику поддержки новых языковых функций, которая определяется в терминах «стадии» процесса TC-39 , поэтому в то время она была закрыта.

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

Недавние действия по этой проблеме указывают на некоторую путаницу в отношении статуса этого запроса функции, поэтому я собираюсь заблокировать эту беседу.

Короче говоря: если вам интересна эта функция, см. Gh-2991.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги