Typescript
Автор конспекта: Стогниева Виктория
🧠 TypeScript vs JavaScript
TypeScriptне заменяетJavaScript, а расширяет егоTSпомогает писать строже, надёжнее и понятнее, но исполняется всё равноJavaScript.TypeScript— надстройка, улучшенный опыт разработчика, а не новый язык выполнения. ⚙️
⚰️ Миф о "смерти" JavaScript
- 💬 В сообществе часто говорят: «
JavaScriptмёртв, все пишут наTypeScript». - 🤔 Но по факту
TypeScriptне исполняется — он компилируется вJavaScript. - 🚫 Нет движков, которые могли бы выполнять
TypeScriptнапрямую. - ✅ Конечный язык, который запускает браузер или
Node.js—JavaScript.
Ссылка на typescript online typescript
online
💡 Что делает TypeScript полезным
TypeScript = JavaScript + строгая типизация.
-
Он не заменяет, а дополняет
JS: -
🔍 помогает писать менее ошибочный код;
-
🧩 делает код структурным и предсказуемым;
-
⚡ ускоряет разработку за счёт автодополнения и подсказок
IDE; -
🧠 снижает «ментальную нагрузку» при чтении и поддержке проектов.
❗TypeScript — это не новый язык, а инструмент, который делает разработчика лучше. 🧑💻
🧮 Компиляция и транспиляция
- 🧩 Транспиляция — превращение языка в похожий язык (
TS→JS). - 🧱 Компиляция — более общий процесс (
TS→ машинный код / другой язык). - В контексте
TSэти термины почти синонимы. - 📜 Конфиг
tsconfig.jsonсообщает, что и как компилировать.
🧭 Node.js vs Браузер
V8, но разные окружения.💬 Разница между Compile-time и Runtime
Цель TypeScript — ловить максимум ошибок на этапе компиляции, до запуска.
⚙️ Как работает TypeScript
- ✍️ Пишем код на
.ts(TypeScript). - 🧩 Компилятор
tscпревращаетTS→JS. - 🚀 Запускаем полученный
JSв браузере илиNode.js.
Процесс:
TypeScript → (TSC) → JavaScript → (V8 Engine) → Выполнение.
🧰 Настройка проекта под TypeScript
- Создаём проект:
- Настраиваем
tsconfig.json:
- Структура проекта:
- Запуск компиляции и кода:
🧱 Базовые типы данных
- ⚠️ any — тип «всё что угодно». Использовать только осознанно.
- ✅ Лучше использовать точные типы (
string,number,boolean,null,undefined).
🔍 Неявная типизация (Type Inference)
🧩 Объединение типов и Type Guards — защита типов
Позволяет переменной иметь несколько возможных типов:
- Проверка
selectedTrackId !== nullсузила тип доstringвнутри блока. - Такие проверки называются Type Guards — «охранники типов». 🛡️
🧱 Типизация объектов
TypeScript проверяет форму объекта, а не только названия. Это называется структурная (утиная) типизация: если объект "крякает как утка" — он утка. 🦆
🗃️ Типизация массивов
(generics).⚙️ Типизация функций
(): void— функция ничего не возвращает.(a: number, b: number): number— принимает 2 числа, возвращает число.
🧩 Типизация «пропсов»
Благодаря типам IDE знает, что props.onSelect — функция, принимающая строку. Ошибки в имени или
типе аргумента подсвечиваются сразу.
🚫 Типичные ошибки новичков
🧩 Связь с React и реальными проектами
💬 TypeScript и React — идеальное сочетание для современного фронтенда.
Все современные React-проекты создаются с поддержкой TypeScript: 🛠️ Vite, ⚛️
Create React App (CRA), 🌐 Next.js и другие.
TypeScript помогает:
-
🔹 Типизировать
props,state,contextиhooks; -
🧩 Ловить ошибки при передаче данных между компонентами;
-
📝 Документировать компоненты прямо через типы (интерфейсы и
type); -
⚡ Автоматизировать автодополнение и навигацию по коду в
IDE; -
🧠 Сделать код самодокументируемым и предсказуемым.
💡Хорошо типизированный компонент проще поддерживать, безопаснее использовать и легче тестировать.
🚀 Зачем это всё
TypeScript нужен не ради моды, а ради качества кода и скорости разработки. ⚙️
- 💪 Меньше ошибок — строгая типизация ловит проблемы до запуска.
- 🧭 Понятный и предсказуемый код — проще читать, поддерживать и масштабировать.
- ⚡ Быстрее разработка — автоподсказки и вывод типов экономят время.
- 🔍 IDE помогает, а не мешает — редактор знает типы и подсказывает верные варианты.
- 🧱 Большие проекты становятся управляемыми — кодовая база остаётся стабильной, даже при росте команды.
TypeScript делает тебя более профессиональным фронтенд-инженером, а твой код — надёжным, понятным и безопасным.
🏁 Итог
TypeScript не убил JavaScript — он сделал его строже, умнее и надёжнее. JavaScript остаётся
языком исполнения, а TypeScript — инструментом для написания чистого и безопасного кода.
🏠 Домашнее задание
🎯 Цель задания:
Закрепить понимание того, как TypeScript дополняет JavaScript, что происходит на этапе
компиляции, и научиться уверенно типизировать примитивы, объекты, массивы, функции и
React-компоненты.
1. Типизация примитивов
Отработай аннотации базовых типов: строки, числа, булевы значения, any и объединение со значением
null.
Задача 1.1
Добавь явные типы к переменным
Задача 1.2
Добавь явный тип к переменной
Задача 1.3
Добавь явный тип к переменной
2. Типизация объектов
Научись описывать форму объектов.
Задача 2.1
Опиши тип книги (BookType) с названием, автором, количеством страниц и статусом публикации
Задача 2.2
Опиши тип курса (CourseType) с названием, вложенным объектом инструктора (имя и рейтинг),
продолжительностью в часах и статусом доступности.
3. Типизация массивов
Попрактикуйся с однотипными массивами, объединениями элементов и записью Array<T>.
Задача 3.1
Определи типизацию для массива, содержащего значения продолжительности в миллисекундах.
Задача 3.2
Опиши тип автомобиля (CarType) с брендом, моделью, годом выпуска и ценой
Задача 3.3
Опиши тип покупки (PurchaseType ) с названием товара, количеством, вложенным объектом магазина
(название и город), и общей суммой
4. Типизация функций
Отработай типизацию функций
Задача 4.1
Добавь типы к параметрам и возвращаемому значению функции, которая вычисляет площадь прямоугольника.
Задача 4.2
Типизируй функцию логирования этапа сборки
Задача 4.3
Типизируй функцию, которая проверяет режим strict и возвращает строку с сообщением.
Задача 4.4
Типизируй функцию поиска пользователя по ID, которая принимает число и массив объектов
пользователей, а возвращает объект пользователя или undefined, если пользователь не найден.
5. Типизация props в React
Закрепи типизацию компонентов
Задача 5.1
Опиши типы пропсов для React-компонента карточки продукта, который принимает название, цену, доступность и описание.
Задача 5.2
Опиши типы пропсов для React-компонента кнопки задачи, который принимает текст задачи, статус выполнения, опциональный приоритет и обязательную callback-функцию для изменения статуса задачи.
Задача 5.3
Опиши типы пропсов для React-компонента карточки пользователя, который принимает имя, email, статус активности и два обязательных callback'а: один для редактирования пользователя, другой для его удаления.
🔶 TypeScript — это щит и компас фронтендера. Освоив его, ты перестанешь бояться рефакторинга и
будешь писать код, который объясняет сам себя. TypeScript делает твои компоненты
самодокументируемыми — ты не просто «пишешь», ты проектируешь.
🔶 Ошибки теперь — твои союзники. TypeScript не ругается, он помогает. Он указывает на слабые
места ещё до запуска кода. Привыкай к его «красным подчеркиваниям» как к советам опытного наставника
— так растёт профессионализм.
🔶 React + TypeScript = уверенность в масштабировании. Когда твой проект растёт, типы удерживают
архитектуру от хаоса. Компоненты становятся предсказуемыми, данные — прозрачными, а разработка —
спокойной. Это фундамент для команды и для будущего.


