Я потратил некоторое время на изучение спецификации языка Typescript и немного смущен насчет разницы между внутренними и внешними модулями. Вот описание, взятое непосредственно из спецификации:
Внутренние модули (раздел 9.2.2) являются локальными или экспортированными членами других модулей (включая глобальный модуль и внешние модули). Внутренние модули объявляются с помощью ModuleDeclarations, которые определяют их имя и тело. Путь имени с более чем одним идентификатором эквивалентен серии объявлений вложенных внутренних модулей.
Внешние модули (раздел 9.4) представляют собой отдельно загруженные тела кода, на которые ссылаются имена внешних модулей. Внешний модуль записывается как отдельный исходный файл, содержащий хотя бы одно объявление импорта или экспорта. Кроме того, внешние модули могут быть объявлены с использованием AmbientModuleDeclarations в глобальном модуле, который напрямую определяет имена внешних модулей в виде строковых литералов. Это описано далее в разделе 0.
Из того, что я понял, я думаю, что внешние модули соответствуют файлам Typescript без включения определений модулей, которые просто экспортируют набор типов и/или переменных. Из другого файла Typescript я могу просто импортировать внешний модуль в foo.ts с помощью import foo = module("foo");
Может кто-нибудь объяснить мне различие между внешними и внутренними модулями?