Есть новая версия CoffeeScript, которая более совместима с современным JavaScript. В новом выпуске добавлены функции, включая поддержку асинхронных функций и JSX.
Код CoffeeScript компилируется один к одному в JavaScript, при этом его легче читать и добавлять языковые функции, не поддерживаемые классическим JavaScript. Разработчики говорят, что язык нацелен на простое раскрытие хороших частей JavaScript. Вы можете легко использовать любую существующую библиотеку JavaScript из CoffeeScript, и скомпилированный вывод остается читаемым, проходит через JavaScript Lint без предупреждений, будет работать во всех средах выполнения JavaScript. Он имеет тенденцию работать так же быстро или быстрее, как эквивалентный рукописный JavaScript.
Новая версия CoffeeScript переводит код CoffeeScript в современный синтаксис JavaScript. Итак, CoffeeScript => теперь выводится как =>, класс CoffeeScript теперь выводится с использованием ключевого слова class и так далее. Хотя это имеет свои преимущества, это означает, что вам может потребоваться транспилировать вывод компилятора CoffeeScript, если ваша среда выполнения не поддерживает самый современный синтаксис JavaScript. CoffeeScript имеет встроенную поддержку транспилятора Babel.
Второе важное изменение в CoffeeScript 2 — это поддержка синтаксиса асинхронных функций, синтаксиса деструктуризации будущего объекта и JSX. Другие изменения в JavaScript, такие как поддержка модулей, тегированных литералов шаблонов и конструкции for..of, были перенесены в CoffeeScript версии 1.12.
JSX представляет собой смесь элементов JavaScript и XML, а CoffeeScript поддерживает вкрапления элементов XML без необходимости в отдельных плагинах или специальных настройках.
ES2017 добавил асинхронные функции с использованием ключевого слова await, а CoffeeScript использует понятие асинхронной функции, просто являющейся функцией, которая ожидает.
Разработчики говорят, что есть минимальные критические изменения по сравнению с более ранними версиями, и большинство текущих проектов CoffeeScript должны иметь возможность обновляться с минимальным рефакторингом или без него.
Некоторые новые функции JavaScript не были добавлены в CoffeeScript, включая let и const (и var), именованные функции и ключевые слова get и set, чтобы избежать двусмысленности. Разработчики заявляют, что отсутствие в CoffeeScript эквивалентов этих функций не влияет на совместимость или взаимодействие с модулями или библиотеками JavaScript.