JavaScript: Что нового в ECMAScript 2018 (ES2018)?

Dmitry Kudla
3 min readFeb 14, 2018

--

Перевод статьи JavaScript: What’s new in ECMAScript 2018 (ES2018)?

На последнем собрании TC39 были отобраны нововведения, которые войдут в « ECMAScript® 2018 Language Specification» (ES2018). Были включены все предложения, достигнувшие четвертой стадии с момента утверждения ES2017 . Эта статья — быстрый взгляд на новые возможности ES2018.

Стадия-4?

Комитет TC39 рукводствуется процессом в пять стадий, начиная со Стадии-0 до Стадии-4, в каждой из которых он разрабатывает новую особенность языка. Стадия-4 — это “Финальная” фаза. Список предложений Стадии-4 доступен на GitHub.

Rest/Spread

При деструктуризации свойства Rest / Spread позволяют объединить оставшиеся свойства объекта в новый объект. Можете думать об этом как о волшебном магните, привлекающем все оставшееся.

Я сам часто использую это, особенно в React (Native), где забираю определенные данные из this.props для внутреннего использования, а затем перенаправляю все оставшиеся props возвращаемому дочернему компоненту.

Кроме того, если вы немного измените ход ваших мыслей, свойства Rest / Spread предоставят вам хороший способ удалить свойство из объекта немутабельным способом.

Асинхронная итерация

С асинхронной итерацией мы получаем асинхронные итераторы и асинхронные iterables. Асинхронные итераторы, как и обычные итераторы, за исключением метода next(), возвращают промис для пары {value, done}. Чтобы использовать асинхронные iterables, теперь мы можем использовать ключевое слово await для циклов for … of.

Promise.prototype.finally()

Promise.prototype.finally() завершает выполнение всех промисов, позволяя вам создать колбэк, который отработает после изменения состояния промиса ( fulfilled или rejected).

Типичным примером использования является скрытие spinner после запроса fetch(): вместо дублирования логики внутри последних .then() и .catch() теперь можно поместить его внутрь .finally()

Особенности RegExp

Всего 4 предложения, связанные с RegExp, вошли в ES2018:

Особенно хочу остановиться на втором пункте, т.к. он повышает удобство чтения:

Более подробную информацию об этих особенностях можно найти у Mathias Bynens — одной из движущих сил этих нововведений — в его блоге: регулярные выражения ECMAScript становятся все лучше!

Что сейчас?

Обратите внимание, не все нововведения доступны во всех браузерах. Стадия-4 означает, что они завершены и разработчики браузеров должны их реализовать (некоторые уже реализованы, другие в процессе реализации).

Я уже с нетерпением жду, что же еще появится в JavaScript. Например, Optional Chaining Operator уже мне очень нравится🙂

--

--