tsc --module всегда генерирует один и тот же вывод независимо от аргумента

StackOverflow https://stackoverflow.com//questions/12697947

  •  12-12-2019
  •  | 
  •  

Вопрос

Я новичок в Javascript, NodeJS и, очевидно, TypeScript.Я хотел бы поэкспериментировать со службами компилятора в src/services (Windows) для обеспечения IntelliSense и т. д.для редактора.

Насколько я могу судить, мне нужно иметь возможность require код служб TypeScript на сервере NodeJS и связываться с ним из редактора.Мне не удалось найти какой-либо код служб TypeScript, специфичный для NodeJS, поэтому я думаю, что мне придется скомпилировать код служб с помощью --module amd чтобы сделать его доступным для NodeJS через RequireJS.

Если вышеизложенное верно, мои попытки скомпилировать код служб с помощью --module amd дает точно такие же результаты, как и использование типа модуля по умолчанию (см. ниже).

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
Это было полезно?

Решение

Это, по общему признанию, сбивает с толку, но код в LanguageService.ts не находится в «модуле» в смысле определения «модуля» в AMD/RequireJS.

Спецификация относится к вещам внутри module блок как «внутренние модули».Это то, что вы видите в LanguageService.ts.Вы можете думать о них скорее как о контейнерах или синглтонах, которые предоставляют имя верхнего уровня (рассмотрение кода, созданного для простого внутреннего модуля, немного проясняет это).Вы используете их как обычные объекты верхнего уровня без какого-либо загрузчика модулей.

Производство внешний модули (как они названы в спецификации) для require делается путем помещения export директива в объявлении верхнего уровня в файле .ts (см. раздел спецификации 9.2.1).Есть образцы (например.imageboard), доступный для скачивания, который сделает это, если вам интересно.

Другие советы

Ваши модули должны быть определены как export module, Не твое module а затем скомпилируйте его с помощью --m amd или --module amd.

Мне потребовалось несколько часов, чтобы осознать :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top