Существует около триллиона статей о том, почему Typescript — отличный язык программирования, но что это значит для фронтенд-разработчика?

Я работаю Full Stack разработчиком уже 6 лет, в основном Front End(FE) с AngularJS, а сейчас изучаю React/Angular 2+/Vue и Back End в основном с Node.js. Окончив колледж по специальности инженер-программист, я изучаю все основы структуры данных, базы данных, шаблонов и всех основ объектно-ориентированного программирования(ООП).

С таким фоном, проработав 6 лет в FE с Javascript, некоторые навыки со временем ухудшились.
По запросу мне пришлось изучить Swift и XCode (да, вам нужно изучить xcode, слишком много функций, которые вам нужны, прежде чем на самом деле «хорошо» работать с инструментом) за 1 месяц, что было очень интересно вызов, который я принял, я начал замечать, как трудно было вернуть все знания ООП, даже с основами… Мне пришлось все заново изучать в рекордно короткие сроки… и это было отстойно. (Swift — удивительный язык, попробуйте его как-нибудь, если хотите узнать что-то новое!)

В javascript все является объектом, у вас нет классов, а концепция наследования может быть достигнута с помощью очень «хакерского» способа использования прототипа, который легко может привести к катастрофе! Вы можете использовать структуры данных, шаблоны и множество концепций ООП, но без классов и наследования вы упускаете лучшее из лучшего!

Проекты FE обычно больше ориентированы на графику, вам не нужно много навыков программирования, это, вероятно, будет вашей первой мыслью, а как насчет больших сложных проектов с похожими, но разными функциями? Представьте себе объект «Уведомление», у вас есть 5 различных типов уведомлений, которые используют общие методы CRUD, но каждое уведомление имеет 1 метод, который отличает его.
Вы увидите 2 общих подхода к этому:
1. Копировать/ Вставьте код в каждое уведомление. (Да, друзья, это был самый быстрый подход с кучей технических долгов и нереальными сроками)
2. Создать отдельный файл с кодом, записанным один раз, но МНОГО параметров на метод для каждого конкретного случая. и если везде проверять, какой тип уведомления, что, если каждое уведомление отправляет разные URL-адреса?!!

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

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

С годами я стараюсь поощрять передовой опыт в своей команде и в каждой команде, в которой я работаю, но, к сожалению, я видел некоторое плохое качество кода в командах FE, в которых я работал (не только у юниоров, которых это понятно). , но и Seniors), все они знают ООП и имеют по крайней мере основы этой концепции, но нельзя отрицать, что Typescript даст всем нам правильные инструменты для лучшего кодирования в будущем!