Как ответить
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 — это про дисциплину и предсказуемость. Он не делает код медленнее или быстрее, но делает его надёжнее и понятнее, особенно в командной разработке.