Что такое TypeScript и чем он отличается от JavaScript
Что проверяют
Понимаете ли вы, что это надстройка со стиранием типов, и знаете ли, где типы не помогают.
Как отвечать
TypeScript это JavaScript плюс статическая система типов. Любой валидный JavaScript это валидный TypeScript. Компилятор проверяет типы и выдаёт обычный JavaScript: в рантайме типов нет вовсе, значит нет ни проверок, ни накладных расходов.
Что добавляется поверх: аннотации и вывод типов, интерфейсы и псевдонимы, объединения и сужение, дженерики, перечисления, модификаторы доступа в классах, утилитные типы (Partial, Pick, Record, ReturnType).
Что это меняет на практике: опечатка в поле и неверный аргумент видны до запуска, автодополнение и переименование по проекту работают надёжно, сигнатура функции служит документацией, которая не устаревает.
Чего типы не делают, и это главная часть ответа: они не проверяют данные на границе программы. Ответ сервера, JSON.parse, localStorage, параметры адреса приходят как any или как заявленный, но не проверенный тип. Поэтому на границе нужна валидация во время выполнения.
Практика: включать strict сразу, для неизвестных значений использовать unknown вместо any, а типы ответов API либо генерировать из OpenAPI, либо выводить из схемы валидатора.
Где спотыкаются
Говорят, что TypeScript безопаснее в рантайме.
Ставят any при первой ошибке компиляции.
Считают, что тип ответа сервера что-то гарантирует.
Путают interface и type, не зная единственного реального отличия про слияние объявлений.