Что такое TypeScript?
TypeScript (TS) — это язык программирования, который добавляет безопасность типов в JavaScript (JS). Это в основном типы JavaScript +, например.
Однако TypeScript никогда не выполняется. Вместо этого файлы TypeScript с расширениями .ts транспилируются в файлы JavaScript .js, которые, в свою очередь, могут выполняться на Node.js.
В этой статье предполагается уровень знаний JavaScript и TypeScript от начального до среднего.
В этой статье я сопоставлю и сравню два разных подхода к написанию ваших модульных тестов:
- В файле JavaScript модульное тестирование уже транспилированного кода из TypeScript или
- В файле 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:
- Напишите модульные тесты на TypeScript, запустите tsc, чтобы скомпилировать как файлы программы, так и ее модульные тесты, а затем запустите модульные тесты.
- Сначала скомпилируйте файлы программы в 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.