Школа
Веб-разработка

Что вы думаете о Тайпскрипте? Используете его в продуктах бюро?

Влад
30 ноя 2023
👁 3044   🗩3
Веб-разработка

Что вы думаете о Тайпскрипте? Используете его в продуктах бюро?

Влад
30 ноя 2023
👁 3044   🗩3
Игорь Петров
Разработчик, преподаватель Школы бюро
Полезно
 14
14
Непонятно
 1
1
Войдите в Бюросферу, чтобы голосовать

TypeScript — «надстройка» над Яваскриптом, с главной фишкой в виде статической типизации. В Яваскрипте разные типы данных могут быть преобразованы друг в друга, а в Тайпскрипте типы фиксируются заранее и не меняются.

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

Беда в том, что сегодня Тайпскриптом пытаются решить проблемы, которые надо решать автотестами, повышением уровня и культуры разработки в целом. В итоге Тайпскрипт не решает эти проблемы, зато добавляет новые, попутно удваивая объём кода. Типизация — дорогое лекарство, но не панацея.

Ещё Тайпскрипт не страхует от взрывов в рантайме, сетевых проблем, старых браузеров и, конечно, никак не помогает формулировать, понимать и правильно решать задачи :‑)

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

Ещё Тайпскрипт не страхует от взрывов в рантайме, сетевых проблем, старых браузеров и, конечно, никак не помогает формулировать, понимать и правильно решать задачи :‑)

Тайпскрипт + плохой код = очень плохой код

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

Тайпскрипт + любой код = гораздо больше кода

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

Тайпскрипт + низкий уровень команды = бесполезный код ради кода

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

И вроде из всего этого следует, что Тайпскрипт — инструмент для команды крутанов, где уже внедрены все лучшие практики. Вот только сколько я знал таких крутанов — они себя и без типов прекрасно чувствуют :‑)

Но я уверен, что не всё вижу и понимаю. Поэтому приглашаю уважаемых советчиков в коменты. Расскажите, когда и в чём вы видите измеримую пользу Тайпскрипта? Поделитесь историями, как он помог бизнесу заработать больше денег или спас приложение в критический момент? Или наоборот — поделитесь своими аргументами против.

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Полезно
 14
14
Непонятно
 1
1
Войдите в Бюросферу, чтобы голосовать
Отправить
Поделиться
Поделиться
Запинить
Твитнуть

Комментарии

Андрей Лечев

Обсуждать эту тему мне приходится куда чаще, чем хотелось бы. Откуда‑то в головах у людей берутся убеждения, что ТайпСкрипт — это лекарство, что он не даёт совершать ошибки или что он может заменить тесты. С такими предпосылками сложно прийти к выводам, отличным от изложенных выше.

При этом ТайпСкрипт — просто помощник. И, насколько я вижу, даёт он больше, чем требует:

  1. Для начала он заставляет программиста задуматься. Создавая переменную или функцию — о том, что в переменной хранить или что за аргументы функция принимает и возвращает. Код, над которым думали изначально, как правило лучше кода, который эволюционировал в процессе разработки. Противопоставить этому можно TDD, но в реальной жизни практически не встречается.

  2. Когда в процессе разработки приходится добавлять типы (особенно сложные) к уже существующим переменным или функциям, это — нет, не красный, но как минимум жёлтый флаг: место, где нужно обратить особое внимание перед тем, как принять пулл‑реквест, или где нужен рефакторинг, если самому пришлось это делать.

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

  4. Наконец, это незаменимые подсказки во время написания кода. Не единственное решение для этого, не спорю, сам обильно добавляю JSDoc‑коментарии, чтобы напомнить, что делают функции, но даже одни только типы — уже хорошо.

Про то, что приходится писать намного больше кода и на этом тратится немереное количество времени/ресурсов, можно спорить, но спор будет бессмысленным. В начале кажется перебором. В процессе начинаешь ловить себя на том, что нравится, когда... см. пункты о том, что даёт TS выше. Чем больше проект, чем больше команда, чем чаще приходится разбираться в чужом кода — тем полезнее.

Поможет ли заработать денег бизнесу? Нет. Не напрямую точно. Если только бизнес не поставляет библиотеки кода. Но вот каждый раз, приходя на уже давно разрабатываемый проект, где возникает мысль «Это проще переписать» — грамотно написанные типы помогут разобраться и сэкономить очень много на переписание.

И тесты нужно писать отдельно. И учиться программировать тоже — ТайпСкрипт не позволит избежать этого ;‑)

Кирилл Киселев

Зачем тогда нужны типизированные языки? Типизация = прозрачность. Ты не сидишь и не думаешь, что в этой переменной. Как минимум TS = документация.

Вячеслав Крампец

Тайпскрипт — это инструмент. У каждого инструмента — своё предназначение. Как нет смысла тащить электрическую мясорубку в поход, так и Тайпскрипт не потребуется в проектах, где сложность задач по реализации интерфейса возможно удержать на низком уровне. Но и крутить фарш на сотню гостей ручной мясорубкой долго и больно — всё равно что писать сложное приложение на Джиквери.

Из нашей внутренней политики:

  1. В задачах с ограниченным контекстом, например одной страницей или одним блоком страницы плюс немного Аякс‑взаимодействия с сервером, можно использовать любую удобную технологию — от ванильного Джаваскрипта и Джиквери до Вью, Реакта, Свелта, Солида и пр. Разработчик может специально выбрать новую, ранее неиспользованную технологию, чтобы потренироваться на простой задачей и поделиться опытом.

  2. В больших «реактивных» проектах основную библиотеку выбираем на старте. ТайпСкрипт является обязательным к использованию. Всё взаимодействие бэкенда и фронтенда описываем заранее, до реализации. Типы генерируем или пишем вручную одновременно и для бэкенда и для фронтенда. Обязательно используем постоянно работающий статический анализатор.

  3. Тесты пишем по общей парадигме, как для бэкенд, так и для фронтенд, — много юнит‑тестов и тесты happy path процессов.

Реальный результат:
После одного «переходного» года почти всё пишем на Тайпскрипт, даже небольшие скрипты в узких задачах. Все разработчики, кто распробовал, назад не возвращаются.

Хочется отметить, что с Тайпскриптом легче разобраться в чужом коде.

Также соглашусь с Андреем Лечевым, недооценивать работу в среде разработки (IDE) не стоит. Современные среды прекрасно работают с Тайпскриптом (подсказки, статанализ, генерация кода, генерация тестов), при этом поддержка Джаваскрипта далека от совершенства, при всём старании сотен разработчиков.

Цель рубрики — обсуждение вопросов дизайна, веб-разработки, переговоров, редактуры и управления.
Комментарии модерируются. Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры.

Рекомендуем другие советы