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

Dmitry Kudla
Feb 14, 2018 · 3 min read

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

Image for post
Image for post

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

Стадия-4?

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

Rest/Spread

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

Image for post
Image for post

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

Image for post
Image for post

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

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

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

Image for post
Image for post

Promise.prototype.finally()

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

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

Image for post
Image for post

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

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

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

Image for post
Image for post

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

Что сейчас?

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

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

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store