Итак, у меня есть два файла: a.ts
и b.ts
. b
экспортирует что-то для использования a
. Компилятор TypeScript обрабатывает это нормально, но отказывается создавать действительный вывод для браузера. Пример:
import { test } from "./b";
console.log(test);
b.ts
export const test = "quest";
, и теперь я пытаюсь скомпилировать его:
$ tsc --lib dom,es2018 --target ES2018 --out test.js a.ts b.ts
b.ts:1:1 - error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
1 export const test = "quest";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error.
хм, странно. Хорошо, давайте попробуем использовать --module
. Если я использую amd
, браузер, который загружает test.js
, скажет мне: ReferenceError: define is not defined
. Если я попробую system
, он скажет: ReferenceError: System is not defined
.
Хорошо, это не работает. Давайте попробуем без установки одного выходного файла с --out
. Это дает мне:
SyntaxError: import declarations may only appear at top level of a module a.js:1
SyntaxError: export declarations may only appear at top level of a module b.js:1
Итак, исходя из этого, кажется, что мои единственные варианты использования машинописи:
- Поместите весь код в один файл
- Используйте внешнюю библиотеку, например require. js или webpack
- Узнайте, что такое модуль и если / как его можно использовать в браузере
Или я что-то упустил? Как мне скомпилировать Typescript с использованием импорта без добавления библиотек / модулей?
Версия TypeScript: 3.8.3