Ok, hadd kezdjem azzal, hogy „Module” különböző dolgokat jelenthet. Például ott van a „modul minta”, amely az, amit a „MyModule” teremt. Amennyire én gyűjteni, írógéppel utal ezekre, mint „belső modulok” a nyelvi spec, és ezek különböznek a „Külső modulok”, hogy lenne berakodás valami hasonló RequireJS. A fő különbség az, hogy a külső modulok számíthat arra, hogy a saját elszigetelt környezetben egy előre meghatározott „export” tárgy tudják használni exportáló működésére.
Vessen egy pillantást a kimenetét a modul:
var MyModule;
(function (MyModule) {
var MyClass = (function () {
function MyClass() { }
return MyClass;
})();
MyModule.MyClass = MyClass;
})(MyModule || (MyModule = {}));
Azt láthatjuk, hogy az exportáló dolgokat „MyModule”, ami lesz világszerte elérhető más script fájlokat betölteni, például egy html „script” blokk. Az, hogy Ön említette meg 60 ilyen, akkor valószínűleg azt is beállítani, hogy a fordító kimeneti egy fájlt, amit magában a jelölésben, nem tölti be minden fájlt egyenként.
Továbblépve, megnézzük, mi történik a kibocsátás, ha megváltoztatja a modul nyilatkozata „modul MyModule {...}”, hogy „export modul MyModule {...}”:
(function (MyModule) {
var MyClass = (function () {
function MyClass() { }
return MyClass;
})();
MyModule.MyClass = MyClass;
})(exports.MyModule || (exports.MyModule = {}));
Amint látod, a modul még mindig a „modul minta”, de ez van rendelve tagjaként „export”, jelezve, hogy ez azt jelentette, hogy kell terhelni, például csomópont „szükséges” funkciót.
Ebben az esetben, amit szeretne, hogy ténylegesen használni a modul ezt a kódot:
import wrapper = module("./MyModule");
var instance = new wrapper.MyModule.MyClass();
Megjegyzés: A „./MyModule” név valójában utal, hogy a fájlnév (mínusz a Js kiterjesztés) a modul határozza meg (ez az, amiért VS-t, mondván, hogy nem találtunk ezen modulok az Ön számára). A kódot összeállítani, hogy valami ilyesmit:
var wrapper = require("./MyModule");
var instance = new wrapper.MyModule.MyClass();
Ahhoz, hogy hozzá ez, akkor már nem is igazán kell semmit a „modul” kulcsszó, hogy egy modult. Lehet egyszerűen csak exportálni egy funkciót:
// foo.ts
export function foo() {
...
};
// some other file in the same dir
import wrapper = module("./foo");
var result = wrapper.foo();
Ez azért működik, mert a függvény „asztal” lesz közvetlenül hozzá a „kivitel” amelyet alias „wrapper” a másik állományba.
Ahhoz, hogy add tovább erre zavaros káosz a modullal kapcsolatos dolgokat, azt kell megemlíteni, hogy az AMD modulok különböző mindig, mert aszinkron betöltésekor ellentétben csomópont „szükséges”. Ahhoz, hogy géppel kimeneti azokat akkor kell átadni a „--module AMD” paramétert a fordító.
Mindegy, remélem elmagyarázta a helyzetet elég jól ahhoz a ponthoz, képes lesz arra, hogy kitaláljuk, hogy pontosan mi van szüksége / akar. A típus a modulok végén segítségével valóban attól függ, hogyan fogod használni őket ... azaz csomópont, web, vagy valami a kettő keveréke.