Typescript: çözeltide Çoklu projeler

oy
10

Her sınıf kendi ts dosyasında tanımlanan I, bütün yaklaşık 60 sınıflarında Visual Studio 2012. All in typescript bir JavaScript kütüphanesi taşıma işlemi bitene.

Tüm sınıfları aynı modülde tanımlanır. Diğer dosyalarında tanımlanan sınıflara reder referans yorumlarınızı kullanın. her dosyanın düzeni şu şekildedir:

///<reference path='./../myotherclass.ts' />

module MyModule {

    export class MyClass {
        ...
    }

}

Şimdi benim yeni taşıdık kütüphaneyi kullanan gerçek uygulama olacak aynı çözümde ikinci bir projeyi oluşturduk. Her nasılsa Kitaplığımı eklemek zorunda ve ben bu modül sistemi bunun için var sanırım. Ancak, ben MyModule onlarca dosya yayılmıştır olarak hangi dosya (lar) ithal etmek emin değilim. Bu ben için .d.ts dosyasını kullanabilirsiniz şey mi?

Ayrıca, bir modülü almak edebilmek için, bu 'ihracat' anahtar sözcüğüyle bildirilen zorundadır ama o zaman öyle yaparsan artık referans yorumlarla da bulunmayacak.

derleyici çıkışı kolayca requireJS gibi bir modül yükleyici ile kullanılabilir, böylece bütün Bunun üzerine, her iki proje derlenmiş olmalıdır.

Bütün Bunu başarmanın en iyi yaklaşım nedir?

Teşekkür ederim!

Oluştur 07/10/2012 saat 16:41
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
9

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ü.

Cevap 07/10/2012 saat 20:22
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more