Похоже, что даже с 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 секунды
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.
Самый полезный комментарий
Оператор распространения теперь является предложением уровня 3 (https://github.com/tc39/proposals). Есть ли шанс, что эту проблему можно будет открыть повторно?