Ok, bu nedenle bana "Modül" farklı anlamlara gelebilir söyleyerek başlayalım. Örneğin, "MyModule" yaratan şeydir "modül desen" var. Bildiğim kadarıyla toplamak gibi typescript dil spec "İç Modülleri" olarak bunlar ifade eder ve bunlar RequireJS gibi bir şeyle yükleniyor olacağını "Dış Modülleri" dan farklıdır. temel ayrım harici modüller önceden tanımlanmış 'ihracatın nesnenin kendi işlevselliğini ihracat için kullanabilirsiniz kendi yalıtılmış bir ortam olmasını bekliyoruz olmasıdır.
senin modülün çıkışında bir göz atın:
var MyModule;
(function (MyModule) {
var MyClass = (function () {
function MyClass() { }
return MyClass;
})();
MyModule.MyClass = MyClass;
})(MyModule || (MyModule = {}));
Bunu diğer senaryoya erişilir hale Eğer, örneğin, bir html "script" bloğu ile yük dosyaları edilecektir "MyModule" içine şeyler ihraç görüyoruz. Eğer bunlardan 60 sahip bahsettiği olmak, muhtemelen de çıkışa yerine her dosyayı tek tek yükleme, işaretlemesinde içerebilir tek bir dosya derleyici ayarlayabilirsiniz.
Eğer "modül MyModule {...}" ile "ihracat modülü MyModule {...}" adresinin modül beyanı değiştirirseniz Devam ediyoruz, çıkışa neler olduğuna bir göz atın:
(function (MyModule) {
var MyClass = (function () {
function MyClass() { }
return MyClass;
})();
MyModule.MyClass = MyClass;
})(exports.MyModule || (exports.MyModule = {}));
Gördüğünüz gibi, modül hala "modül desen" kullanıyor fakat örneğin, düğüm en fonksiyonunu "iste", yüklü olması gerekiyordu olduğunu belirten, "ihracat" bir üyesi olarak atanan ediliyor.
Bu durumda, gerçekte bu kodla modülü kullanmak isteyeyim:
import wrapper = module("./MyModule");
var instance = new wrapper.MyModule.MyClass();
"./MyModule" adı aslında atıfta Not dosya (VS sizin için bu modülleri bulamadı diyordu bu yüzden) modülü tanımlanmıştır (eksi .js uzantılı). Kod gibi bir şey için derlemek olmalıdır:
var wrapper = require("./MyModule");
var instance = new wrapper.MyModule.MyClass();
Bu eklemek için, artık hatta gerçekten bir modül var? "modülü" anahtar kelimesi ile bir şey yapmak gerekir. Sadece bir işlev ihraç olabilir:
// foo.ts
export function foo() {
...
};
// some other file in the same dir
import wrapper = module("./foo");
var result = wrapper.foo();
işlevin 'foo' doğrudan diğer dosyasındaki "sarıcı" diğer adı olan "ihracat" atanacaktır için bu çalışır.
Modül ilgili şeyler bu kafa karıştırıcı karmaşa üzerine daha da eklemek için, ben de onlar düğüm yönettiği "iste" aksine, uyumsuz yüklenir çünkü AMD modülleri hala farklı olduğunu belirtmek gerekir. Eğer derleyiciye bir "--module AMD" parametresinde geçmeniz gerekir bu çıkışa typescript almak için.
Neyse, ben tam olarak neye ihtiyacınız / istiyorum anlamaya mümkün olacak noktaya yeterince durumu açıkladı umuyoruz. Eğer ... ikisinin yani düğüm, web, ya da bazı karışımı bunları nasıl kullanacağınızı gerçekten bağlıdır kullanmaya sonunda modüllerin türü.