> Что такое TypeScript и чем он отличается от JavaScript (JavaScript, TypeScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Kvando Technologies, Kodix, ЛОЦИЯ, IT-One, GetMatch, TYMY

Стек: JavaScript, TypeScript

> Пример ответа

Короткий ответ

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

Подробное объяснение

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

Ключевые отличия:

  • Статическая типизация: TypeScript проверяет типы до запуска кода, JavaScript - во время выполнения
  • Интерфейсы и типы: возможность описывать сложные структуры данных
  • Enum, generics, декораторы: дополнительные конструкции, отсутствующие в JS
  • Современный синтаксис: TypeScript поддерживает новейшие возможности ECMAScript и транспилирует их в более старые версии
  • Лучшая поддержка IDE: автодополнение, рефакторинг, навигация по коду работают точнее

TypeScript не заменяет JavaScript - он добавляет поверх него слой типовой безопасности. Весь валидный JS-код является валидным TS-кодом, но не наоборот.

На практике

На собеседовании важно показать понимание, что TypeScript решает конкретные проблемы: предотвращает ошибки с типами, упрощает рефакторинг и делает код самодокументируемым. В реальных проектах TypeScript особенно полезен в больших кодовых базах и командной разработке.

Можно упомянуть, что TypeScript не добавляет производительности в рантайме - типы стираются при компиляции. Это инструмент разработчика, а не пользователя.

Пример кода

TYPESCRIPT
// JavaScript - динамическая типизация
function add(a, b) {
return a + b;
}
add(5, "10"); // "510" - неожиданное поведение
// TypeScript - статическая типизация
function addTyped(a: number, b: number): number {
return a + b;
}
addTyped(5, "10"); // Ошибка компиляции: тип string не присваивается number

Как отвечать на собеседовании

Начни с краткого определения TypeScript как надмножества JS. Затем перечисли основные отличия: статическая типизация, интерфейсы, generics. Подчеркни, что TypeScript компилируется в JS и не меняет поведение в рантайме. Приведи простой пример, показывающий, как TS предотвращает ошибку. Закончи практическим выводом: TypeScript повышает надёжность и поддерживаемость кода.

Что проверяет интервьюер

  • Понимание фундаментальной разницы между статической и динамической типизацией
  • Знание, что TypeScript - это надмножество, а не отдельный язык
  • Осознание, что типы существуют только на этапе разработки и компиляции
  • Умение объяснить практическую пользу TypeScript для разработки

Типичные ошибки

  • Утверждение, что TypeScript - это другой язык программирования (это надмножество JS)
  • Мысль, что TypeScript работает быстрее JavaScript (типы не влияют на рантайм)
  • Путаница между компиляцией TypeScript и компиляцией в C++ (TS транспилируется в JS)
  • Игнорирование того, что любой JS-код является валидным TS-кодом
  • Сведение ответа только к синтаксису типов без объяснения практической пользы

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью