Почему typescript разрешает импорты с установленным commonjs?

TypeScript позволяет импортировать модули с использованием CommonJS из-за универсальности и популярности этого стандарта в сообществе JavaScript разработчиков. CommonJS был разработан специально для серверной среды и широко используется в Node.js.

Одним из основных преимуществ использования CommonJS является то, что он позволяет модулям JavaScript иметь явное экспортирование и импортирование функций, переменных и объектов. Это значительно повышает читабельность и поддерживаемость кода, а также упрощает его тестирование и переиспользование.

TypeScript, будучи надмножеством JavaScript, стремится обеспечить совместимость с существующим JavaScript кодом, включая код, написанный на CommonJS. Поэтому TypeScript поддерживает такие импорты.

Однако следует отметить, что в современном мире разработки JavaScript экосистема всё больше смещается к использованию стандарта ESM (ECMAScript Modules) для импортирования и экспортирования модулей. Модули ESM являются более эффективными и масштабируемыми, чем CommonJS. Одним из преимуществ ESM является его возможность загрузки модулей асинхронно, что увеличивает производительность приложений.

В свете этого, TypeScript также поддерживает импорт и экспорт модулей в формате ESM, и рекомендуется использовать этот формат, особенно при разработке для современных браузеров или в средах, поддерживающих ESM.

Если вы разрабатываете библиотеку или пакет, рекомендуется использовать ESM в качестве формата экспорта, так как многие инструменты для сборки и оптимизации кода (например, Rollup или Webpack) лучше поддерживают ESM.

Таким образом, хотя TypeScript позволяет импортировать модули с использованием CommonJS, рекомендуется использовать импорты и экспорты в формате ESM для более современных проектов.