img

Что такое TypeScript?

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

icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Подробнее о курсе

Окей, шутки в сторону, погнали разбираться подробнее. 

 

Если ты не в курсе, что такое 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 зашёл.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Подробнее о курсе
Фронтенд-разработчик с нуля
Погрузитесь в мир веб-разработки, освоив основные инструменты работы: HTML, CSS, JavaScript
Подробнее о курсе
Разработка приложений на Flutter и Dart
Научись создавать кроссплатформенные приложения на Flutter, освой язык Dart
Подробнее о курсе
Автоматизированное тестирование на Python
Изучите автоматизацию тестирования на Python чтобы стать востребованным специалистом
Подробнее о курсе
Еще по теме:
img
А что если мы скажем, что есть способы легко и без боли начать программировать? А потом стать крутым разработчиком, работать в свободном графике и в любое время кушать питсу? Подробнее в статье!
img
Делаем код-ревью корректно - с уважением, эффективностью и улучшением качества, не раздражая коллег
img
Java 21 имеет ряд улучшений в производительности и синтаксисе, однако есть подводные камни. В статье расскажем все о рисках и как сделать миграцию безболезненной
img
Готов узнать что такое gRPC, как работает и для чего нужно? Не, не, это не GPRS, не путай! А ещё расскажем про Protobuf!
img
React - это популярная Javascript библиотека для создания интерфейсов. Узнай, почему её выбирают миллионы девелоперов по всему миру
ЛЕТНИЕ СКИДКИ
30%
40%
50%
До конца акции: 30 дней 24 : 59 : 59