Комментарии 6
Ура, моя машина времени работает! Она доставляет статьи из 2016 года!
На практике es6 модули очень сырые пока, к сожалению, особенно в TypeScript + Node. Поддержка для них в TypeScript весьма странная — например, TypeScript не умеет генерировать .mjs и всегда генерирует .js (помечено как wont fix в их GitHub issues), а для включения es6 модулей в TS приходится писать
import x from “./a.mjs”;
Да-да, вот так, с указанием расширения прямо в *.ts файлах. Костыль страшный.
Есть https://www.npmjs.com/package/esm, который автор эпатажно определяет как «The brilliantly simple, babel-less, bundle-less ECMAScript module loader. Esm is the world’s most advanced ECMAScript module loader. This fast, production ready, zero dependency loader is all you need to support ECMAScript modules in Node 6+» — и который также костыль над предыдущим костылем.
Поэтому в TypeScript для серверного кода в большинстве случаев приходится использовать module=commonjs. Для Webpack-а же — module=esnext, иначе не работают чанки.
Во всем этом только одно радует: на TypeScript можно спокойно использовать import-export. Клюджи только на уровне скомпилированных файлов.
PS. Небольшая опечатка
CommonJS/NOde.js
Блин, топовая статья, очень полезно
Понимание (всех) «модульных» форматов и инструментов JavaScript