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

Что такое TypeScript?
Окей, шутки в сторону, погнали разбираться подробнее.
Если ты не в курсе, что такое JavaScript, то посмотри сначала наше видео, где мы подробно рассказываем про фронтенд разработку
Но мы конечно быстренько напомним - JavaScript это язык программирования, который выполняется браузером и используется для того чтобы делать сайты и веб приложения интерактивными: анимация, кнопки, отправка данных, вот это все.
Это основной язык, который используют фронтенд разработчики, и конечно же, как и все в этом мире, он не лишен недостатков. Но программисты не очень любят с этим мириться, а наоборот, любят все улучшать и исправлять. Вот и пацаны из Microsoft решили создать свой JavaScript с блэкджеком и … без недостатков. Так и появился TypeScript.
Итак, TypeScript - это язык программирования, созданный на основе JavaScript, который по сути, является надстройкой к нему, или как еще говорят суперсEтом (Superset). Это означает, что он использует тот же базовый синтаксис, что и обычный JavaScript, но что-то к нему добавляет.

А что добавляет? Много всего! Но самый главный компонент содержится в его назывании - типы.


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

Давай смотреть как это работает. Вспоминаем все шутки про JavaScript: сложим число со строкой и в выводе получим строку:

А если перемножим число со строкой, то в выводе получим число:

Офигеть как не очевидно, согласись? А теперь глянь как это выглядит в TypeScirpt:

Вооу, а что это такое? А это сразу получаем ошибку в редакторе кода, что переменную типа “строка” уже нельзя положить в переменную с типом “число”

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

И если присвоим не то значение в него, то получим ошибку (жестко зумим username):

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

Ну, а если все таки нужно вернуться к корням и обойти это поведение, то можно указать тип any, но смотри не переборщи, иначе смысла в TypeScirpt будет не много.

Вот так! Теперь можно попрощаться со сравнением строки и числа:


Или обращением к несущесвующим свойствам объектов:


И даже использованием методов к пустым переменным.


Ну красота, но это еще не все, лягушачий! Зацени интерфейсы!

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

А как тебе аннотация типов? Это ж прям в коде видно какой тип нужно передавать в функцию

А если зачем-то передал массив чисел туда, где ждут строку - то получай по еб***! ой, ошибку, ну то есть, сам виноват. Зато с TypeScirpt без сюрпризов в рантайме.

Возвращаемый тип тоже можно указать через двоеточие, все как у взрослых ребят со двора!

И помимо этого есть куча всяких разных штук, типа дженериков, модификаторов доступа, широкой настройки массивов и кучи различных сложных типов.
А ещё - зацени наш курс по TypeScript, где ты научишься устанавливать и настраивать окружение, изучишь типы и аннотации типов, интерфейсы и классы, модификаторы доступа и сможешь создавать полноценные проекты на… типаскрипте.. ну понял да? Типа-скрипт, TypeScirpt.. Ладно, там ещё бесплатный вводный урок есть, если что..
Ладно, теперь о том как это работает. Обычный джаваскрипт интерпретируется браузером, и это позволяет ему быть динамически типизированным. TS же у нас компилируется. Но TypeScirpt код переводится не в машинный код, а в обычный ванильный джаваскрипт код. И даже можно выбрать в какую версию JS переводить, что позволяет поддерживать старые браузеры.

И параметры компиляции мы можем задавать свои, которые нам нужны - делается это в файл

Также TypeScript поддерживает будущие функции, запланированные в добавление JavaScript. Это означает, что можно использовать новые функции JS до того, как веб-браузеры или другие среды начнут полностью их поддерживать, все благодаря перекомпиляции.
Есть конечно у TypeScript и недостатки. Например, надо писать гораздо больше кода со всеми этими типами, тратить время на компиляцию, или допиливать типы для библиотек, которые не портированы на TypeScript , но если тебя это не пугает, то в замен ты получишь стабильный прод, крепкие нервы, прохладу и скорее всего - силу земли!
Ну и как всегда вопрос под конец - мы говорили про работу в браузерах, а будет ли он работать с Node.JS? Ответ пиши в коменты!
Эй, нажми лайк, если TypeScript зашёл.