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

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

Заполните пробелы в знаниях

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

Вам это кажется знакомым?

Осмелюсь предположить, что у каждого разработчика есть пробелы в знаниях, потому что невозможно знать все о технологиях, особенно в постоянно меняющемся современном мире! Моя основная идея - определить, какие пробелы в знаниях сдерживают вас, и уменьшить их.

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

Кроме того, я считаю, что повторение в обучении необходимо.

Судя по моему опыту, у большинства разработчиков есть пробелы в знаниях в области информатики. Это могло произойти из-за того, что люди не посещают университеты или не сосредотачиваются на математических основах. Например, незнание того, как работает стандарт IEEE 754, может помешать разработчику эффективно использовать числа.

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

Учите языки со статической типизацией

TypeScript не существует в вакууме. Он хорошо связан с другими основными языками программирования, черпая вдохновение из C # и Java. Как многопарадигмальный язык, он предоставляет возможности, доступные в других технологических стеках.

Вы когда-нибудь задумывались, почему большинство языков со статической типизацией выглядят одинаково?

Это из-за существования систем типов?

Возможно…

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

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

Изучите исторический взгляд

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

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

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

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

Поддержите проект детской площадки

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

Я рекомендую вместо этого поддерживать проект игровой площадки.

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

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

Вы можете задаться вопросом, что это за проект моей игровой площадки. Ответ прост - я поддерживаю проект, который обслуживает CRUD REST API, пишу с использованием шаблонов функционального программирования. Работа над ним позволила мне понять, что я не могу применять функциональное программирование в качестве повсеместной парадигмы в коммерческом проекте.

Спланируйте, что делать

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

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

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

Используйте правильную архитектуру

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

Если бы мне пришлось прототипировать простое приложение CRUD REST API, я бы, вероятно, использовал Python с Django Framework.

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

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

Кроме того, вам нужно понимать, что вы работаете в проекте TypeScript. Даже если вы все еще можете использовать идеи JavaScript, такие как добавление свойств к существующему объекту, у вас могут возникнуть серьезные проблемы с системой типов. TypeScript способствует безопасности типов за счет гибкости.

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

Проконсультируйтесь с вашими идеями

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

Сначала вы можете воспользоваться Интернетом, чтобы узнать, осуществима ли ваша идея. Чтение результатов поисковой системы по вашему выбору может дать вам представление о сообществе. Проблема только в том, что вы читаете сообщения незнакомцев, чьи навыки вы не можете достоверно оценить.

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

Как я построил свою сеть?

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

Стоили ли все мои усилия?

Определенно!

Я узнал о существовании Дено на одной из этих встреч, и я не верю, что мог бы получить эту информацию где-нибудь еще.

Резюме

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