Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: TypeScript, compile time, type system, interfaces, type aliases, enums

Какие сущности TypeScript существуют только на этапе компиляции?

Вопрос проверяет понимание отличий TypeScript от JavaScript, а именно какие конструкции существуют только на этапе компиляции и не влияют на рантайм.

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

Сущности, существующие только на этапе компиляции в TypeScript, включают интерфейсы, типы (type aliases), дженерики, декораторы (в старом синтаксисе), а также аннотации типов. Они используются для статической проверки кода и не генерируют никакого JavaScript-кода после компиляции. Исключение составляют Enums, которые частично компилируются в объекты, но их типовые аннотации исчезают.

Длинный ответ

Сущности TypeScript, существующие только на этапе компиляции

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

Основные сущности, которые исчезают после компиляции

  • Интерфейсы (Interfaces) — используются для описания структуры объектов, но не генерируют никакого кода.
  • Псевдонимы типов (Type Aliases) — аналогично интерфейсам, существуют только для проверки типов.
  • Аннотации типов — все указания типов (например, : string) удаляются.
  • Дженерики (Generics) — параметры типов стираются, остаётся только логика без типов.
  • Декораторы (в старом синтаксисе) — хотя они могут влиять на рантайм, их типовые аннотации исчезают.

Пример кода

// Исходный TypeScript
interface User {
  name: string;
  age: number;
}

function greet<T>(user: T): void {
  console.log(user);
}

// После компиляции в JavaScript
function greet(user) {
  console.log(user);
}

Как видно, интерфейс User и дженерик <T> полностью исчезли. Это позволяет TypeScript быть полностью совместимым с JavaScript, не добавляя накладных расходов на выполнение.

Исключение: Enums

Enums частично компилируются в объекты JavaScript, но их типовые аннотации также удаляются. Например:

enum Color { Red, Green, Blue }
// Компилируется в:
var Color;
(function (Color) {
  Color[Color["Red"] = 0] = "Red";
  // ...
})(Color || (Color = {}));

Таким образом, сам объект существует в рантайме, но типы, связанные с enum, исчезают.

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • TypeScript

    TypeScript

Ключевые слова

#TypeScript

#compile time

#type system

#interfaces

#type aliases

#enums

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию