В TypeScript 4.5 НЕ будет поддержки ESM



В бете TS 4.5 была представлена поддержка ESM, но она не войдет в финальный билд.



Причины довольно разные:



1. Баги

Т.к. фича сложная, то, очевидно, есть пространство для багов.



2. Странный UX

Например, проблемы с описанием exports для package.json, сложности с определением является ли ESM или CJS текущий модуль.



3. Несовместимость с экосистемой

Вот здесь очень забавно: ts-node, Webpack и Vite не очень любят импорты, заканчивающиеся на *.js. Но при этом ts-node, Webpack, Vite и Deno спокойно воспринимают *.ts, а TS не позволяет этого. Ну и опять сложности с описанием types в exports.



На самом деле очень сложно как-то кратко суммировать оригинальное ишью, так что автором библиотек точно стоит почитать.



Таким образом, ESM пока что будет доступен только в nightly версиях.

А основной релиз не стоит ожидать раньше февраля.



P.S. Иногда мне кажется, что мир без ESM был бы сильно проще, и это какая-то бесконечная история, абсолютно несовместимая с текущей экосистемой.