Все программы JS совместимы с TS, но не всегда наоборот. Существуют программы TS, не подходящие к JS. Это обусловлено тем, что TypeScript отличается дополнительным синтаксисом в спецификации типов (правило 53).
TypeScript — необычный язык. Он не использует интерпретатор (как Ruby или Python) и не проводит компиляцию кода в низкоуровневый язык (как Java или C). Вместо этого он компилирует программу в другой высокоуровневый язык — JavaScript.
Пустой набор, который не содержит значений, меньше остальных. В TypeScript он соответствует типу never. Так как его область пуста, то переменной типа never не могут быть присвоены никакие значения
Такие наборы называют областью типов. К примеру, можно воспринимать тип number как набор числовых значений. В него будут входить 42, -37,5, но никак не 'Canada'. В зависимости же от настройки опции strictNullChecks, null и undefined могут являться или не являться частью области.
JavaScript применяет утиную типизацию, а TypeScript ее моделирует при помощи структурной типизации. В связи с этим значения, присваиваемые вашим интерфейсам, могут иметь свойства, не указанные в объявленных типах. Типы в TypeScript не бывают запечатанными.