Вопрос проверяет базовое понимание различий между JavaScript и TypeScript на уровне типов.
JavaScript имеет динамическую и слабую типизацию. Типы определяются во время выполнения. TypeScript добавляет статическую типизацию на этапе разработки. Это позволяет находить ошибки до запуска кода. При этом в рантайме остаётся обычный JavaScript.
JavaScript и TypeScript отличаются не синтаксисом выполнения, а моделью работы с типами.
JavaScript:
динамически типизирован
тип значения может меняться
проверки происходят в рантайме
Пример:
let value = 10;
value = "text";
Ошибки типов проявляются только при выполнении кода.
TypeScript вводит:
статическую типизацию
проверку типов на этапе компиляции
аннотации типов
вывод типов (type inference)
Пример:
let value: number = 10;
// value = "text"; // ошибка на этапе разработки
TypeScript:
не меняет поведение JavaScript
не существует в рантайме
компилируется в обычный JavaScript
Все типы удаляются при сборке.
TypeScript:
снижает количество багов
улучшает автодополнение
упрощает поддержку кода
делает рефакторинг безопаснее
JavaScript имеет динамическую типизацию, а TypeScript добавляет статическую проверку типов на этапе разработки, не влияя на выполнение кода.