- для стартапов

Автор: Халил Наджар

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

Причина этого проста: разработчики ❤ TypeScript.

Земля обетованная TypeScript

Typescriptlang.org определяет этот язык как:

Масштабируемый JavaScript.

Это определение может показаться расплывчатым, но это все, чем является TypeScript. Хотя важно знать, что это не связано с производительностью кода.

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

Потом…

Зачем использовать TypeScript, если он просто компилируется в JavaScript в конце?

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

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

  • Наличие разработчиков именно для этого языка (в хорошем количестве и качестве). TypeScript
  • Это не модный язык, который может потерять актуальность через несколько лет. TypeScript поддерживается Microsoft, а также является основным языком Angular (поддерживается Google), и многие компании переносят свои кодовые базы JS на TS, поэтому: TypeScript

Лучшая кодовая база

Следует ли вашей компании начать использовать TypeScript для новых проектов или, что еще страшнее ... перенести существующие кодовые базы в землю обетованную TS?

Мой короткий ответ: Да. В конце концов, будет лучше, если вы сможете сделать что-то с самого начала, если это не скажется на доставляемости. Это то, что мы поняли на раннем этапе в Alteos, когда предпочли TypeScript JavaScript, и это принесло нам значительную пользу по мере нашего роста - подробнее об этом позже.

У каждой компании разные стратегии относительно того, как стать прибыльными, и иногда при определении стратегии допускаются ошибки. Одна из этих стратегий может заключаться в быстром написании кода с намерением провести рефакторинг на более позднем этапе. Потому что, как вы знаете, это то, что сделали Twitter и другие крупные компании, верно? Ну, не совсем.

Реальность такой компании, как Twitter, такова, что они находятся в другом месте, чем когда они были созданы, поэтому требуется другая технология - это в контексте масштабируемости производительности.

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

Пример №1 - Интерфейс

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

Более быстрое и предсказуемое развитие.

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

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

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

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

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

Пример №2 - Типы

Во втором примере у нас есть стрелочная функция foo, которая возвращает объект с тремя свойствами.

Вместо создания интерфейса для возврата foo TypeScript позволяет сгенерировать тип на основе того, что возвращается из функции (см. строку 11).

Автоматически документированный код (… вроде)

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

Прием новых участников

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

Некоторые сервисы написаны на TypeScript, Go, а другие (в основном, интерфейсные приложения) написаны на чистом JavaScript. Когда я пришел в компанию и прошел адаптацию к кодовой базе компании, я могу с уверенностью сказать, что это было определенно проще для сервисов, написанных на TS из-за того, что он побуждает разработчиков структурировать код в более удобочитаемом виде.

Я заметил, что это явление справедливо и для всех новых членов команды компании, даже если у них не было опыта работы с TypeScript.

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

Обзор кода

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

Могу вас заверить, что с TypeScript гораздо проще проверять чужой код. Вам не нужно делать вывод о типе возвращаемого значения функции или о том, какие аргументы были переданы. Это прямо здесь, чтобы вы могли прочитать.

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

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

Что нужно учитывать

Хотя TypeScript кажется идеальным решением для большинства проблем JavaScript, есть некоторые моменты , о которых следует знать, особенно если вы приедете из типизированных языков, таких как C # или Java.

  • Поскольку TypeScript компилируется в простой JavaScript, типы не переносят этот процесс, поэтому они НЕ существуют во время выполнения.
  • Вы все еще можете «взломать» систему типов с помощью принудительного преобразования типов или использования any, когда разработчики ленивы.
  • Вы можете использовать библиотеки JS с TS, но вы можете столкнуться с тем, что не все из них будут иметь доступные определения типов, поэтому ваша команда может быть вынуждена либо создавать их и поддерживать, либо приводить все к любому. Что может привести к несоответствию кодовой базе.

Заключение

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

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

  • Типизированный язык
  • Кодовая база с лучшей структурой
  • Позволяет упростить миграцию на другие языки при необходимости в будущем
  • Более быстрая разработка с меньшими ошибками
  • Более легкая адаптация для новых участников
  • Автоматически документированный код
  • Лучшие обзоры кода
  • Доступны все библиотеки JavaScript
  • Один язык для Back End и Front End
  • Высокая тенденция внедрения (+ 160% с 2018–2019 гг. По данным GitHub)

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

«Если бы у меня было девять часов, чтобы срубить дерево, я бы потратил первые шесть часов на то, чтобы точить свой топор».

- Авраам Линкольн

Обо мне

Родился и вырос в Коста-Рике, в настоящее время проживает в Берлине, Германия. Работает инженером-программистом в Alteos GmbH, компании, которой Axa доверяет. сильно повлияет на будущее технического страхования.