[Easy] TypeScript vs JavaScript
1. Что такое TypeScript?
Как TypeScript связан с JavaScript?
TypeScript — это надмножество JavaScript, добавляющее статическую типизацию и инструменты для разработчиков.
- Весь валидный JavaScript является валидным TypeScript
- Код TypeScript компилируется в JavaScript перед выполнением
- Ошибки типов обнаруживаются во время разработки, а не только во время выполнения
2. TypeScript vs JavaScript на первый взгляд
| Тема | JavaScript | TypeScript |
|---|---|---|
| Система типов | Динамическая | Статическая + с выводом типов |
| Этап компиляции | Не требуется | Требуется (tsc или сборщик) |
| Обнаружение ошибок | В основном во время выполнения | Во время компиляции + во время выполнения |
| Поддержка рефакторинга | Базовая | Сильная |
| Кривая обучения | Ниже | Выше |
3. Сравнение на примере (Example Comparison)
JavaScript
function add(a, b) {
return a + b;
}
console.log(add(1, '2')); // "12" (возможно, непреднамеренно)
TypeScript
function add(a: number, b: number): number {
return a + b;
}
// add(1, '2'); // ошибка на этапе компиляции
console.log(add(1, 2));
TypeScript помогает предотвратить случайные ошибки приведения типов.
4. Процесс компиляции (Compilation Flow)
- Пишите
.tsили.tsx - Проверка типов компилятором TypeScript
- Генерация JavaScript
- Выполнение JavaScript в браузере или Node.js
В продакшн вы всё равно поставляете JavaScript.
5. Преимущества TypeScript (Advantages)
- Более раннее обнаружение ошибок
- Лучшее автодополнение и навигация в IDE
- Более безопасный крупномасштабный рефакторинг
- Более чёткие контракты API между командами
6. Компромиссы TypeScript (Trade-offs)
- Требует настройки (
tsconfig, сборочный конвейер) - Добавляет синтаксис и концепции типов
- Может быть избыточно многословным при неправильном использовании
7. Когда что выбирать (When to Choose Which)
Выбирайте JavaScript, когда:
- Скорость прототипирования — главный приоритет
- Масштаб проекта маленький и краткосрочный
Выбирайте TypeScript, когда:
- Размер проекта или команды средний или большой
- Важно долгосрочное сопровождение
- Публичные API нуждаются в строгих контрактах
8. Стратегия миграции с JavaScript (Migration Strategy)
- Включите TypeScript с
allowJs - Конвертируйте модули с высоким риском первыми
- Постепенно включайте
strict - Заменяйте
anyна точные типы со временем
Этот инкрементальный подход минимизирует нарушения.
9. Краткие ответы для собеседования (Quick Interview Answers)
В1: Выполняется ли TypeScript напрямую браузерами?
Нет. Браузеры выполняют JavaScript, поэтому TypeScript сначала должен быть скомпилирован.
В2: Гарантирует ли TypeScript ноль ошибок во время выполнения?
Нет. Он ловит многие ошибки, связанные с типами, но логические ошибки во время выполнения всё ещё возможны.
В3: Обязателен ли TypeScript для React?
Нет. React работает и с JavaScript, и с TypeScript; TypeScript опционален, но распространён в продакшн-приложениях.