От автора: TypeScript. Есть много людей, которые ухмыляются, когда слышат, что на нем написаны фреймворк, библиотека или фрагменты кода. Некоторые люди даже избегают его использования, просто потому, что считают, что это еще одна вещь, которую нужно учить. Тем не менее, TypeScript — это одна из лучших функций Microsoft, которая является полностью бесплатной, с открытым исходным кодом и широко принятой сообществом.
Команде Angular она понравилось настолько, что они даже построили вокруг нее свои генераторы CLI. Это только несколько преимуществ TypeScript. Он на самом деле довольно крут.
JavaScript превращается в полноценный язык
Если мы вернемся в 90-е, когда все только начиналось, JavaScript появился на сцене как эффект снежинки для веб-страниц. Я это помню. Перенесемся на полтора десятилетия вперед, теперь он работает в back-end с RESTful API, мобильными веб-приложениями и целыми веб-интерфейсами.
В то время как ECMA настаивает на ежегодных обновлениях языка, все еще есть достаточно места для развития JavaScript и изучения других языков, таких как Java и C#.
TypeScript дает разработчикам JavaScript возможность строго создавать код, который будет стабильнее. Это может помочь уменьшить количество ошибок из-за неправильных типов данных, в дополнение к другим вещам, таким как объявление классов, которое не было введено в JavaScript до ES6.
Для чего нам нужны типы в JavaScript
На первый взгляд, TypeScript выглядит как любой обычный код JavaScript с добавлением типизированных данных. Удобство типов заключается в том, что это предотвращает случайное или неправильное использование данных. Это дает слабо типизированному языку более строгий подход к кодированию.
С TypeScript блок кода может выглядеть так:
let cat: string = "Merlin"; let age: number = 3; function increaseAge( age: number ){ return age + 1; }
Как бы банально это ни казалось, если вы запустите increaseAge(cat) с помощью TypeScript, выдаст ошибку, потому что функция increaseAge() ожидает number, а не string. Однако, если это будет работать в простом JavaScript, increaseAge(cat) вернет Merlin1вместо того, чтобы сказать нам, что что-то пошло не так. Это может привести к ошибкам в дальнейшем, и нам нужно будет развить навыки отслеживания ошибок и выяснять, что пошло не так.
Вышеописанное работает точно так же, как JavaScript, но с небольшим количеством синтаксического сахара, который помогает обнаружить потенциальные ошибки до того, как это произойдет.
Перекрестная совместимость
Сеть развивается быстро, и иногда вещи, которые управляют Вебом, недостаточно быстро завоевывают популярность. TypeScript решает эту проблему, позволяя вам выбрать, какая версия вывода JavaScript вам нужна. Таким образом, для разных сред вам нужно всего лишь один раз написать код в TypeScript, а затем сгенерировать необходимый код JavaScript в выбранной вами версии ES.
Назначение TypeScript состоит в том, что он работает поверх JavaScript, компилируется в обычный JavaScript и обрабатывает любые возможные пробелы в функционале. Хотя JavaScript имеет обратную совместимость, когда вы используете новые функции в браузере, который работает с предыдущей версией JavaScript, это может привести к сбою приложения. TypeScript реализует функцию обнаружения и определяет, как помочь вам обработать вывод JavaScript для достижения того, чего вы хотите. Это позволяет тратить больше времени на кодирование логики приложения, а не пытаться справиться с логикой перекрестной совместимости между устройствами, браузерами и средами.
Стандартизирует код между командами
Когда вы не привязаны к определенной версии JavaScript, вы можете свободно создавать код без ограничений из-за изменений или невозможности его изменения. Ваш код становится намного более стабильным, и вы можете реализовывать функции и функциональные возможности наиболее согласованным и модульным образом без необходимости проводить рефакторинг каждый раз, когда обновляется JavaScript или когда браузеры и среды разработки отображают эти изменения. Ваша команда должна разбираться только в парадигмах программирования и реализовывать их в TypeScript, а не иметь дело с перекрестной совместимостью и потенциальными проблемами обновления. Это также позволяет команде ликвидировать пробел в функциональности и производительности, возникающий из-за изменений и несоответствия версий JavaScript в коде и конечной целевой среде.
Надежное программное обеспечение в средах и библиотеках
Во время разработки Angular 2 команда на самом деле искала решение для расширенного набора JavaScript, которое бы решил проблему пробелов в функционале и совместимости. TypeScript был рассмотрен в качестве кандидата, и в мире открытого исходного кода было достигнуто маловероятное партнерство между Google и Microsoft.
Помимо дополнительных возможностей набора текста, TypeScript также предоставляет доступ к ES7 и ES8, в то время как основные браузеры все еще отстают. Функции 2018 года, такие как Object.fromEntries, не поддерживаются в Chrome 72 и во всех браузерах Edge. Хорошо сформированный JSON.stringify 2019 года по-прежнему не используется в Node вместе с необязательной привязкой перехвата в Node версии 8.10 или более ранней. Вы можете получить больше информации из матрицы совместимости ES.
Но как он соотносится с такими крупными игроками, как React и Node?
Мы все знаем, что Angular продвигает TypeScript так же, как и самого себя. Вы не можете работать с Angular, не имея дела с TypeScript. Но как насчет React и Node? React уже использует JSX и Node, но вы можете написать это на простом JavaScript.
Особенность TypeScript в том, что он не меняет способ написания кода. Он только добавляет дополнительную структуру для того, чтобы создать определенный уровень проверки. Таким образом, ваш код React может выглядеть как код React, но с добавлением типов.
Когда вы преобразуете код JavaScript в TypeScript, ваш код все равно будет работать, потому что к нему еще не прикреплены никакие типы. Однако, если объявлены типы, именно тогда вы начнете видеть силу и удобство TypeScript в процессе отладки.
TypeScript работает поверх всего остального и не нарушает функционирование и структуру выбранной вами платформы, библиотеки или vanilla JavaScript кода.
Заключение
Если вы новичок в JavaScript, вам не стоит ухмыляться при первом же упоминании TypeScript. TypeScript был разработан не просто для того, чтобы побудить разработчиков back-end работать с front-end, а для того, чтобы на основе уроков, извлеченных из других языков, предоставить каждому инструмент, который позволяет создавать надежный код.
JavaScript был создан, чтобы быть переносимым и простым — но со временем мы увидели, что язык выходит за рамки его первоначального замысла. Хотя несколько сотен, если не тысячи строк кода, все еще можно было бы поддерживать на обычном JavaScript — мы все знаем, что это уже не так. Код JavaScript работает везде и почти на каждом устройстве. Количество строк растет в геометрической прогрессии, и нам нужен способ ментально переварить и поддерживать его.
Изучить сам TypeScript не сложно. Он пишется и работает как JavaScript — только с несколькими инструментами и приемами, которые помогут вам улучшить код. На самом деле, вы можете просто написать код TypeScript, как JavaScript, и он все равно будет компилироваться. Хотя TypeScript может показаться синтаксическим сахаром, это делает наш опыт поддержки и написания кода намного оптимальнее.
Автор: Aphinya Dechalert
Источник: https://itnext.io
Редакция: Команда webformyself.