Вопрос проверяет понимание отличий TypeScript от JavaScript, а именно какие конструкции существуют только на этапе компиляции и не влияют на рантайм.
TypeScript — это надстройка над JavaScript, которая добавляет статическую типизацию. Многие конструкции TypeScript существуют исключительно на этапе компиляции и не имеют представления в рантайме. Это означает, что после транспиляции в JavaScript они полностью удаляются или преобразуются в обычный JS-код без типов.
: string) удаляются.// Исходный 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 частично компилируются в объекты JavaScript, но их типовые аннотации также удаляются. Например:
enum Color { Red, Green, Blue }
// Компилируется в:
var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
// ...
})(Color || (Color = {}));
Таким образом, сам объект существует в рантайме, но типы, связанные с enum, исчезают.
Понимание того, какие сущности TypeScript существуют только на этапе компиляции, помогает разработчикам избегать ошибок, связанных с попыткой использовать типы в рантайме. Это знание особенно полезно при написании библиотек или при работе с рефлексией, где типы могут потребоваться динамически.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию