TypeScript — как JavaScript, но может больше
easy

TypeScript — как JavaScript, но может больше

Способ избежать проблем JavaScript в больших проектах.

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

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

Строгие типы данных

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

В TypeScript типизация строгая — указать тип переменной нужно при её создании, а изменить в будущем нельзя. Например:

let a: string; // Завели переменную «a» и указали, что это строка. Теперь она останется строкой и не превратится случайным образом в число

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

let any: any; // Завели переменную any, у которой может быть любой тип

В TypeScript есть типы данных, которых нет в JavaScript. Например, enum — перечисление:

enum iPhonePrice {

XR = 799,

XI = 899,

XII = 999}; // Создали перечисление iPhone с ценами на возможные варианты

В будущем можно вызвать это перечисление и подставить значение:

let total: number = iPhonePrice.XR; // Создали переменную total, указали, что она — число, и задали ей в качестве значения стоимость iPhone XR.

Поиск ошибок прямо в IDE

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

Писать на TypeScript можно в любом софте, который понимает язык из коробки или с помощью внешнего плагина. Например, Sublime, VSC или Atom. Вот как поиск ошибок работает в Visual Studio Code. Возьмём для примера ts-проект с двумя переменными: a и b, где a — это строка, а b — число:

Вот как поиск ошибок работает в Visual Studio Code

Попробуем присвоить переменной «a» значение 12.

Попробуем присвоить переменной «a» значение 12

В редакторе высвечивается ошибка:

TypeScript — как JavaScript, но может больше: В редакторе высвечивается ошибка

TypeScript подсказывает, что мы не можем задать значение 12 для переменной «a». Потому что «a» должно быть строкой, а 12 — число. Попробуем присвоить не 12, а “12”, и ошибка пропадёт.

Интерфейсы и классы

В TypeScript лучше реализованы некоторые идеи ООП, например, классы и интерфейсы. 

Интерфейс — способ описать форму объекта — список свойств и их тип. Например, создадим интерфейс пользователя:

interface IUser {
name: string,
age: number,
}

Теперь можно создать с помощью этого интерфейса нового пользователя:

const alexey: IUser = {
     name: Alexey,
age: 18,
}

Интерфейсы помогают избегать ошибок. Бывает, что программист создаёт объект, но добавляет в него какое-то новое свойство или опечатывается в названии старого. В классическом JS это не остановит выполнение программы — просто в объекте появится еще одно свойство, но уже с опечаткой. И дальше в коде будут необъяснимые ошибки, которые будет очень трудно отловить. 

С типизацией накосячить сложнее — если опечатался в названии свойства, появится ошибка. 

Создадим интерфейс пользователя с полями «Имя» и «Возраст», а затем на его основе — пользователя Alexey со свойствами «Имя», «Возраст» и «Пол». Редактор кода поругается — в интерфейсе третьего свойства нет:

TypeScript — как JavaScript, но может больше: Создадим интерфейс пользователя с полями «Имя» и «Возраст

Обратная совместимость

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

Эту статью мы написали по мотивам интервью с Александром Штыковым — фронтенд-лидом Деловой Среды. С недавних пор TypeScript стал стандартом во всех проектах, над которыми работают команды Александра.

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

Эксперт

Александр Штыков


Текст и иллюстрации

Слава Уфимцев



Корректор

Ирина Михеева


Художник

Даня Берковский


Вёрстка

Мария Дронова


Соцсети

Олег Вешкурцев


Во имя

строгих типов данных

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy