Typescript: yapmak sınıf görünür iç modülü yalnızca

oy
9

Aşağıdaki kod göz at:

module MyModule {
    class MyPrivateClass {
        ...
    }

    export class MyPublicClass {
        private var: MyPrivateClass; // MyPrivateClass is unknown
    }
}

İstediğim MyPrivateClass içeride sadece görünür olmasını MyModule özellikle iç kullanım için, MyPublicClass . Dış MyModule , sadece MyPublicClass görünür olmalıdır. Yukarıdaki düzeni yapması gerektiğini anladım ama VS yakınıyor MyPrivateClass içinde görünmüyorsa MyPublicClass . Tanımı daha önce ihracat ekleme MyPrivateClass için görünür kılan MyPublicClass ama sonra o da dışarıdan görünür durumdadır.

Görebilmesi için bir yol var mı MyPublicClass sadece?

Teşekkür ederim.

Oluştur 08/10/2012 saat 13:28
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
7

Burada genel sınıfından özel sınıfı kullanılarak ve bir hata üretir özel sınıfı, kullanma girişimi, özel sınıfı, genel sınıf gösteren bir çalışma örneği.

Hala bir hata alırsanız, size soruna neden modül için kullanmaya çalışıyorlar ismi ifşa edebiliyoruz?

module MyModule {
    class MyPrivateClass {
        doSomething() {
            return 1;
        }
    }

    export class MyPublicClass {
        private x = new MyPrivateClass();

        someFunction() {
            return this.x.doSomething();
        }
    }
}

var examplePublic = new MyModule.MyPublicClass();
var result = examplePublic.someFunction(); // 1

var examplePrivate = new MyModule.MyPrivateClass(); // error
Cevap 12/10/2012 saat 17:32
kaynak kullanıcı

oy
2

Eğer emmitted JavaScript özel olmasını istiyorsanız modülü içinde özel clas örneğini hareket ettirerek bunu ancak ihraç sınıf tarafında olabilir.

module MyModule {
    class MyPrivateClass {
        prop1: number = 1;
    }

    var foo: MyPrivateClass = new MyPrivateClass();

    export class MyPublicClass {
        someMethod(){
            var bar = foo.prop1;
        }
    }
}

var x = new MyModule.MyPublicClass();
Cevap 03/01/2013 saat 17:39
kaynak kullanıcı

oy
0

Sen Yorumlarınızı birinde şunları söyledi:

Tuhaf: Ben yukarıdaki gibi kod yapıştırırsanız (sizin veya madeni), önemli değil. Ama en kısa sürede gerçek adının modülün adını değiştirmek gibi hata ben görünür tarif

Bu benim yaşadığım bir sorun çok benzer sesler. Ben modülleri ithal etmek çeşitli referans yolları kullanarak olmuştu çünkü neden oldu. Bir modül üyeleri içeride sonucunda birbirlerine erişemedi.

Üzgünüm ama ben bir daha ayrıntı hatırlayamıyorum ve ben (ya da benim) hatayı yeniden mümkün olmamıştır. Bu muhtemelen işe yaramaz ama ben yine de benim deneyim paylaşmak istedim: Referans yolları ve modülleri Karıştırma çok garip hatalara neden gibi görünüyor.

Üstelik bazen VisualStudio oldukça garip davranır. Şu anda bir arkadaşı ile birlikte bir typescript proje üzerinde çalışıyorum. kod github repo saklanır. İkimiz de aynı versiyonunu çıkardı. Ben benim için iyi çalıştı ve onun için hata mesajları ile serpilmiştir. Aynı işletim sistemi, typescript, VisualStudio aynı sürümünün aynı versiyonu ... İlginçtir hata da modüllere ilgiliydi. ithal edildi bir modül "boş" gibi görünüyordu. Bu modülün içeriği kullanmaya çalıştı tüm kod kırmızı kutlandı. O Studio ve aniden, kod geçerli kabul edildi yeniden başlattı. Biz bir şey değişmedi! O da, sorunsuz derlenmiş.

Cevap 19/01/2013 saat 13:15
kaynak kullanıcı

oy
0

Hmm, aksi derleyici alanını oluşturmaz, onunla herhangi bir sorun görmüyorum ama alan değeri initialize unutmayın:

module MyModule {
    class MyPrivateClass {

    }

    export class MyPublicClass {
        private instance: MyPrivateClass; // MyPrivateClass is unknown
        constructor() {
           this.instance = new MyPrivateClass();
        }
    }
}
Cevap 08/10/2012 saat 13:40
kaynak kullanıcı

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