ENIGMA AI
ENIGMA AI

Что такое TypeScript?

встречается 2× TypeScript junior language_specific

Как ответить

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

На практике TypeScript даёт несколько ключевых преимуществ: автодополнение в IDE, рефакторинг без страха что-то сломать, самодокументируемость кода. Для junior-разработчика это особенно ценно — меньше багов и проще разбираться в чужом коде.

Вот простой пример. Обычный JS:

function add(a, b) {
  return a + b;
}

add(2, "3"); // Результат "23" — ошибка, но программа не упадёт

С TypeScript:

function add(a: number, b: number): number {
  return a + b;
}

add(2, "3"); // Ошибка компиляции: Argument of type 'string' is not assignable to parameter of type 'number'

Типы можно писать вручную, а можно использовать вывод типов (inference) — компилятор сам догадается, если это очевидно. Для сложных структур используют интерфейсы и типы:

interface User {
  id: number;
  name: string;
  email?: string; // необязательное поле
}

function greet(user: User): void {
  console.log(`Hello, ${user.name}`);
}

Настройка проекта обычно делается через tsconfig.json. Важные флаги: strict (включает все жёсткие проверки), target (версия JS на выходе), module (система модулей).

Для junior-уровня важно понимать:

  • TypeScript не добавляет новых runtime-возможностей — это только проверки на этапе компиляции.
  • Типы полностью стираются после компиляции — в браузер приходит обычный JS.
  • Распространённые конструкции: union types (string | number), generics (<T>), enum, type guards.
  • Ошибка новичков — злоупотребление any, которое отключает проверку типов. Надо стараться минимизировать any и использовать unknown, если тип действительно неизвестен.

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

Ключевые тезисы

  • TypeScript — надмножество JavaScript со статической типизацией, весь JS-код является допустимым TS-кодом.
  • Компилятор TS транслирует код в JS — в рантайме типов нет, это только время разработки.
  • Основные возможности: явная типизация, интерфейсы, дженерики, union/intersection типы, strict-режим.
  • Преимущество для junior: раннее выявление ошибок, автодополнение, самодокументируемость.
  • Ошибка — частое использование any: стоит заменять его на конкретные типы или unknown.

Что спросят дальше

  • — Расскажи подробнее про union и intersection типы с примерами.
  • — Как настраивается tsconfig, какие флаги включишь в первую очередь?
  • — Объясни разницу между type и interface — когда что использовать?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение