Jaka jest różnica między modułami wewnętrznymi i zewnętrznymi w TypeScript?

Spędziłem trochę czasu czytając specyfikację języka Typescript i jestem nieco zdezorientowany różnicą międzywewnętrzny izewnętrzny moduły. Oto opis zaczerpnięty bezpośrednio ze specyfikacji:

Wewnętrzne moduły (sekcja 9.2.2) są lokalnymi lub eksportowanymi członkami innych modułów (w tym modułu globalnego i modułów zewnętrznych). Wewnętrzne moduły są deklarowane przy użyciu ModuleDeclarations, które określają ich nazwę i treść. Ścieżka nazwy z więcej niż jednym identyfikatorem jest równoważna serii zagnieżdżonych deklaracji modułów wewnętrznych.

Moduły zewnętrzne (sekcja 9.4) są osobno ładowanymi elementami kodu, do których odwołują się nazwy modułów zewnętrznych. Moduł zewnętrzny jest zapisywany jako oddzielny plik źródłowy, który zawiera co najmniej jedną deklarację importową lub eksportową. Ponadto moduły zewnętrzne można zadeklarować przy użyciu deklaracji AmbientModule w module globalnym, który bezpośrednio określa nazwy modułów zewnętrznych jako literały łańcuchów. Jest to opisane dalej w sekcji 0.

Z tego, co zrozumiałem, sądzę, że moduły zewnętrzne odpowiadają plikom maszynopisu bez dołączania definicji modułów, które po prostu eksportują zestaw typów i / lub zmiennych. Z innego pliku maszynopisu mogę w prosty sposób zaimportować zewnętrzny modułfoo.ts zimport foo = module("foo");

Czy ktoś może wyjaśnić mi przeznaczenie między modułami zewnętrznymi i wewnętrznymi?