Зачем конвертировать MJS в TS?
Разработчики конвертируют .mjs в .ts, чтобы получить статическую проверку типов и автодополнение в редакторе, сохраняя при этом ту же структуру ES-модулей, которую они уже написали.
Способы конвертации MJS в TS
Переименование в .ts / .mts EASIEST
Переименуйте файл в .ts (или .mts для принудительного вывода ESM); инструкции import/export работают как есть, и вы можете добавлять типы постепенно.
Компилятор TypeScript (tsc) OPEN-SOURCE
Установите "allowJs": true в tsconfig.json, затем запустите tsc для проверки типов и генерации JavaScript; ужесточите strict, когда ошибки будут исправлены.
Visual Studio Code FREE
Откройте переименованный .ts в VS Code; встроенный сервис TypeScript подсветит отсутствующие типы и предложит быстрые исправления для добавления аннотаций.
esbuild OPEN-SOURCE
Запустите esbuild file.ts --outfile=file.js, чтобы быстро удалить типы для сборки, хотя esbuild не выполняет проверку типов.
Об этих форматах
Файл .mjs - это исходный код JavaScript, который Node.js обрабатывает как модуль ECMAScript. Это означает, что в нем используются import и export вместо require в CommonJS. Расширение…
Открыть детали .MJS →Файл .ts - это MPEG Transport Stream, формат видеоконтейнера, используемый в цифровом ТВ, записях PVR, видеокамерах AVCHD и HLS-стриминге. VLC media player открывает его на любой ОС. Чтобы…
Открыть детали .TS →Качество и на что обратить внимание
- Переименование делает файл валидным TS, но он не дает реальной безопасности, пока вы не добавите аннотации и не включите проверки
strict. tscсообщает об ошибках типов, которые обычный JavaScript игнорировал, поэтому вам может потребоваться исправить неявныеanyи нетипизированные импорты.- esbuild выполняет транспиляцию без проверки типов, поэтому используйте
tsc --noEmitвместе с ним, чтобы действительно отловить ошибки типов.
Часто задаваемые вопросы
Является ли `.mjs` валидным TypeScript?
.mjs компилируется как .ts даже до того, как вы добавите какие-либо аннотации типов.Что использовать: `.ts` или `.mts`?
.mts, если хотите, чтобы результат оставался ES-модулем независимо от package.json. Используйте .ts и позвольте tsconfig.json и типу пакета определять формат.Будут ли работать мои импорты?
import/export переносится в TypeScript без изменений. Вы только добавляете информацию о типах поверх него.Как запустить полученный TypeScript?
tsc в JavaScript и запустите его, либо используйте раннер типа tsx или ts-node, который выполняет транспиляцию на лету.