Что такое TypeScript?

TypeScript (TS) — это язык программирования, который добавляет безопасность типов в JavaScript (JS). Это в основном типы JavaScript +, например.

Однако TypeScript никогда не выполняется. Вместо этого файлы TypeScript с расширениями .ts транспилируются в файлы JavaScript .js, которые, в свою очередь, могут выполняться на Node.js.

В этой статье предполагается уровень знаний JavaScript и TypeScript от начального до среднего.

В этой статье я сопоставлю и сравню два разных подхода к написанию ваших модульных тестов:

  1. В файле JavaScript модульное тестирование уже транспилированного кода из TypeScript или
  2. В файле TypeScript, который является типобезопасным для тестируемой системы.

Я начинающий Back-End инженер

Быстрый отказ от ответственности; Я только недавно прошел курс обучения Back-End Engineer от Codecademy. Учебный трек использует JavaScript в качестве языка программирования и Node.js вместе с Express.js в качестве платформы веб-сервера.

Трасса Back-End Engineering от Codecademy довольно обширна, и я бы порекомендовал ее всем, кто интересуется back-end или кто, как и я, хочет стать Full-Stack инженером.

В моем случае Full-Stack означает приложение Express.js, размещенное в облачных сервисах с эластичными ресурсами, вместе с соответствующим приложением Android, в то время как для вас это может означать Ruby, Ruby on Rails, React Native и т. д.

Тем не менее, какой бы хорошей ни была карьера в Codecademy, в ней не хватает чего-то, что я считаю первостепенной важностью; уроки по TypeScript.

К счастью, Codecademy также предлагает отдельный курс, который удобно называется Изучение TypeScript.

Структура проекта в TypeScript

Структура проекта при использовании TypeScript очень похожа на структуру проекта JavaScript, работающего на Node.js.

В нашем случае файлы TS расположены в ./src и ./test, а их транспилированные аналоги — в ./built/src и ./built/test соответственно.

Написание модульных тестов

Как упоминалось ранее, существует два рабочих процесса написания и выполнения модульных тестов при разработке на TypeScript:

  1. Напишите модульные тесты на TypeScript, запустите tsc, чтобы скомпилировать как файлы программы, так и ее модульные тесты, а затем запустите модульные тесты.
  2. Сначала скомпилируйте файлы программы в JavaScript, а затем напишите модульные тесты на JavaScript для кода JavaScript.

Стоит ли писать модульные тесты на TypeScript?

Написание модульных тестов на TypeScript дает много преимуществ. Во-первых, вы можете разработать свое приложение, используя парадигму Test-Driven Development (TDD). Статистика успешных проектов по разработке программного обеспечения говорит в пользу TDD.

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

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

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

Как насчет написания модульных тестов на JavaScript?

Самым большим преимуществом написания модульных тестов на JavaScript является скорость итерации цикла красный-зеленый-рефакторинг. Хотя TDD упоминался как преимущество в пользу TypeScript, это палка о двух концах, которая бьет в обе стороны.

Время, затрачиваемое на преобразование красного модульного теста в зеленый из-за накладных расходов на транспиляцию, часто является источником разочарования, когда тест написан на TypeScript.

Более того, основным требованием при написании модульных тестов или отладке в целом является возможность установки точек останова.

Я поиграл и с VSCode, и с WebStorm, чтобы понять, можно ли это сделать, и кажется, что только WebStorm позволяет вам «запускать» модульные тесты в TS.

В заключение я считаю, что то, пишете ли вы свои модульные тесты на JavaScript или на TypeScript, сильно зависит от IDE, которую вы используете для своих нужд разработки.

Я лично начал разработку на WebStorm и продолжу делать это в обозримом будущем. Я пишу модульные тесты на TypeScript.

С WebStorm я могу запускать модульные тесты целенаправленно, индивидуально, всего за несколько щелчков мыши. Эта функция — общеизвестный гвоздь в гроб модульных тестов JavaScript.