Вопрос проверяет понимание процесса компиляции TypeScript и различий между исходным кодом и его результатом.
TypeScript — это надмножество JavaScript, которое добавляет статическую типизацию и другие возможности, отсутствующие в стандартном JS. Однако браузеры и среды выполнения Node.js не понимают TypeScript напрямую. Поэтому перед выполнением код TypeScript должен быть преобразован в стандартный JavaScript. Этот процесс и называется компиляцией (или часто транспиляцией).
Основная задача компилятора TypeScript (tsc) — удалить все аннотации типов и конструкции, специфичные для TypeScript, и оставить валидный JavaScript. Например, интерфейсы и псевдонимы типов (type aliases) полностью исчезают из итогового кода, так как они используются только на этапе проверки типов.
Рассмотрим простой файл TypeScript (example.ts):
// Исходный TypeScript код
type User = {
name: string;
age: number;
};
function greet(user: User): string {
return `Hello, ${user.name}!`;
}
const john: User = { name: "John", age: 30 };
console.log(greet(john));После компиляции командой tsc example.ts будет создан файл example.js. Его содержимое (например, для target ES5) будет выглядеть так:
// Скомпилированный JavaScript код
function greet(user) {
return "Hello, " + user.name + "!";
}
var john = { name: "John", age: 30 };
console.log(greet(john));Как видно, аннотации типов и объявление типа User удалены. Синтаксис шаблонных строк мог быть преобразован в конкатенацию для совместимости со старыми стандартами.
--declaration компилятор генерирует файлы .d.ts, которые содержат только информацию о типах. Они полезны для других проектов, использующих ваш скомпилированный код.--sourceMap создаются файлы .map, которые связывают скомпилированный JS с исходным TS для отладки.Вывод: Результатом компиляции TypeScript является исполняемый JavaScript-код, готовый к запуску в браузере или Node.js. Этот процесс необходим, чтобы использовать преимущества статической типизации на этапе разработки, не теряя совместимости со всей экосистемой JavaScript.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию