TypeScript и JavaScript: что использовать и почему

От автора: в этой статье мы разберем TypeScript и JavaScript, сравним их и узнаем, когда их лучше использовать. Разберем, что же из себя представляет TypeScript, узнаем про его плюсы и минусы.

Что такое TypeScript?

TypeScript — open-source язык программирования, созданный и поддерживаемый Microsoft. Это надмножество JavaScript: любой JS код запускается в окружении TypeScript.

TypeScript придумали, чтобы решить проблемы, возникающие во время разработки крупных JS приложений. Такие приложения состоят из сотен различных файлов. Изменение в одном файле может затронуть множество других. JS не умеет проверять связи между файлами, поэтому разработчики допускали много ошибок, что приводило к багам на проде. Поэтому был нужен фронтенд язык типа TypeScript со статической типизацией.

В отличие от JS, TypeScript компилируемый язык, как C# или Java. Среди фич TypeScript можно встретить множество знакомых вещей. Мои любимые – enum, интерфейсы, модификаторы доступа, неймспейсы, дженерики и т.д.

Множество npm библиотек написано на чистом JS, поэтому TypeScript’у нужен был способ типизировать их. Так появились файлы объявления типов (.d.ts). Такие файлы определяют типы с информацией о коде. Компилятор с их помощью сверяет типы в TypeScript коде. Сейчас большинство JS библиотек имеют TypeScript версии. Даже если в библиотеке нет объявленных типов, TypeScript может вывести их. В остальных случаях вы можете сами объявить типы.

TypeScript отлично подходит для больших веб-приложений, так как позволяет писать как фронтенд так и бэкенд код. Для бэкенда нужно установить библиотеку ts-node для исполнения TypeScript кода на Node.js окружении.

Какие преимущества у TypeScript перед JavaScript?

В 2022 году TypeScript вошел в топ-5 используемых языков во всем мире. Неудивительно, ведь TS постоянно развивается, добавляются новые фичи, а команды TS прислушиваются к сообществу разработчиков.

Основное преимущество TS перед обычным JS в компиляторе, который проверяет типы и ошибки. Он проверяет типы и показывает ошибку в реальном времени. Это удобно при рефакторинге кода, компилятор подсвечивает вещи, которые вы могли упустить.

TypeScript и JavaScript: что использовать и почему

В паре с новейшей IDE типа Visual Studio Code TS может похвастаться функцией Intellisense – подсказки по коду и автокомплитер кода. Эта фича ускоряет разработку.

Разработчики могут настроить поведение TS через файл tscobnfig. Например, в TS есть опция транспиляции кода, которая адаптирует код под предыдущие версии JS, чтобы приложение запускалось во всех браузерах. Также можно выделить опцию strict mode – более строгая проверка кода.

Еще одна крутая фича TS – возможность запускаться параллельно с JS кодом, что упрощает интеграцию в старых проектах с множеством JS файлов.

Также TS позволяет использовать ES6 и ES7 фичи, которые еще не поддерживаются основными браузерами. Например, чейнинг оператор и константы в классах поддерживались в TS задолго до официальной поддержки ECMAScript.

И наконец, в TS много фич, которых нет в JS, что делает кодинг веселее. Интерфейсы, enum и дженерики сильно повысят читаемость вашего кода.

Какие недостатки у TypeScript перед JavaScript?

TS дает множество преимуществ, но он также привносит и недостатки. Среди них нет критичных, однако новичкам стоит о них знать.

Существенный минус TS заключается в ложном ощущении защищенности у его пользователей. Очень часто разработчики, переходя на TS, слишком сильно полагаются на компилятор в надежде, что он подсветит все ошибки с типами. Не думайте, что ваш TS код идеален. Разработчики TS соблюли тонкую грань между гибкостью и правильностью. Но хоть TS и не совершенен, он все же лучше обычного JS, на мой взгляд. Ведь компилятор отлавливает баги, которые вы могли бы не увидеть. Доказано, что TS помогает находить на 15% больше багов чем JS.

Дополнительный шаг с компиляцией также можно отнести к недостаткам TS. Этот шаг увеличивает время билда, а также усложняет сборку.

TS привносит много новых фич, которые могут быть не знакомы фронтенд разработчикам. Из-за этого изучать этот язык сложнее. Если использовать весь потенциал языка, TS может быть сложновато понять неподготовленному разработчику. Ему потребуется часто гуглить или спрашивать наставника.

TypeScript и JavaScript: что использовать и почему

И наконец, некоторые разработчики жалуются, что TS заставляет писать слишком много кода по объявлению типов. Хоть это и так, но в долгосрочной перспективе такой подход позволяет сэкономить время. С TS проще проводить онбординг новых членов команды, а также легче рефакторить код.

Когда стоит использовать TypeScript в новых проектах?

Вас может пугать внедрение новой технологии, с которой у вас совсем нет опыта. Однако с TS оно того стоит, ведь плюсы перевешивают минусы.

Если вы работаете один и не планируете привлекать людей для разработки, я рекомендую использовать TS для следующего проекта. Первые часы настройки будет сложновато, но вы быстро полюбите TS и больше не захотите возвращаться к обычному JS. Сначала вы будете писать код медленнее, но так вы сэкономите на дебаге и рефакторинге в долгосрочной перспективе.

Если же вы работаете в команде, тут будет сложнее. Нужно найти согласие в команде и с менеджментом. Хоть TS и поможет вашей команде в конечном итоге, но в краткосрочной перспективе он замедлит вашу команду. Команде нужно быть готовой к тому, что придется часть времени тратить на изучение TS, его фич и лучших практик. Помочь команде совершить плавный переход может сотрудник с глубоким знанием TS или любого другого ООП языка (например, C#).

Если команда готова пожертвовать краткосрочным снижением производительности для изучения TS, я рекомендую этот язык. Вы точно не пожалеете.

Когда не стоит использовать TypeScript в новом проекте?

Есть причины, по которым я бы не рекомендовал использовать TS, несмотря на всю привлекательность TS.

Самая главная причина не использовать TS – строгий дедлайн. Дедлайны достаточно стрессовая вещь, и внедрение новой незнакомой технологии в таком случае не рекомендуется. К сожалению, на изучение TypeScript нужно время. А это время можно потратить на проекты, где есть дедлайны.

У новичков могут возникнуть сложности с настройкой TS. Возможно, потребуется множество npm библиотек, работа с бандлерами (например, webpack). Если у вас нет времени все это изучать, не используйте TS.

Очередной аргумент – повышенная точка входа для разработчиков. Если проект open-source, разработчикам может быть сложнее вносить доработки.

Для менеджеров и HR использование TS в проекте значит, что при найме разработчиков нужно смотреть на опыт с TS или другим ООП языком. TS повышает минимальные требования для найма сотрудников в проект, а также может увеличить бюджет, ведь нужно нанимать более опытных разработчиков.

TypeScript и JavaScript в старых проектах

Миграция старых проектов с JS в TS вносит множество преимуществ в цикл разработки. TS позволяет отловить баги, которые раньше не замечали. Также упрощается поддержка проекта.

В маленьких проектах миграция с JS на TS может потребовать установку парочки библиотек и простой смены расширений файлов с .js на .ts с последующим фиксом ошибок TS компилятора.

В проектах с сотнями JS файлов все сложнее. Внедрять TS можно постепенно. Можно приоритизировать миграцию файлов в TS и их параллельную работу со старым JS кодом.

Второй вариант – сохранить старый код, а уже новые фичи писать на TS. Когда фича задевает старый код, вы можете мигрировать его прямо пока пишите код для этой фичи.

TypeScript или JavaScript: вердикт

В нашем сравнении TypeScript и JavaScript вы увидели, что TS это отличный ООП язык, с помощью которого можно более эффективно писать большие приложения.

Несмотря на более сложный код и дополнительное время на компиляцию, в долгосрочной перспективе вы сэкономите время. Если вы работаете один, я настоятельно рекомендую использовать TS в вашем следующем проекте.

Если же вы работаете в команде, внедрение TS потребует убеждения людей. Рекомендую начать новый TS проект в свободное время. Потом вы можете просто показать этот проект членам команды и объяснить все преимущества TS.

Автор: Tim Mouskhelichvili

Источник: www.sitepoint.com

Редакция: Команда webformyself.

Читайте нас в Telegram, VK, Яндекс.Дзен

Метки: ,

Похожие статьи:

Комментарии Вконтакте:

Комментарии запрещены.