टाइपप्रति: बनाने के वर्ग दिखाई अंदर मॉड्यूल केवल

वोट
9

निम्नलिखित कोड पर एक नज़र डालें:

module MyModule {
    class MyPrivateClass {
        ...
    }

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

मैं चाहता हूँ MyPrivateClass अंदर ही दिखाई दे सकता है MyModule विशेष रूप में आंतरिक उपयोग के लिए, MyPublicClass । बाहर MyModule , केवल MyPublicClass दिखाई देना चाहिए। मैं लगा कि ऊपर लेआउट करना चाहिए लेकिन वी.एस. शिकायत है कि MyPrivateClass अंदर दिखाई नहीं देता है MyPublicClass । निर्यात जोड़ने से पहले की परिभाषा MyPrivateClass इसे करने के लिए दिखाई दे रही MyPublicClass लेकिन फिर यह भी बाहर से दिखाई है।

वहाँ यह करने के लिए दृश्यमान बनाने के लिए एक रास्ता है MyPublicClass केवल?

धन्यवाद।

08/10/2012 को 13:28
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
7

यहाँ एक काम कर उदाहरण है कि, निजी वर्ग, सार्वजनिक वर्ग से पता चलता सार्वजनिक वर्ग से निजी वर्ग का उपयोग कर और निजी वर्ग, जो त्रुटि उत्पन्न उपयोग करने का प्रयास है।

आपको अभी भी त्रुटि मिल हैं, तो आप नाम आप मॉड्यूल है कि समस्या का कारण बनता है के लिए उपयोग करने के लिए कोशिश कर रहे हैं का खुलासा करने में सक्षम हैं?

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
12/10/2012 को 17:32
का स्रोत उपयोगकर्ता

वोट
2

आप इसे emmitted जावास्क्रिप्ट में निजी होना चाहते हैं आप मॉड्यूल के अंदर करने के लिए निजी clas उदाहरण ले जाकर ऐसा कर सकते हैं, लेकिन पक्ष में नहीं निर्यात वर्ग।

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();
03/01/2013 को 17:39
का स्रोत उपयोगकर्ता

वोट
0

आप अपनी टिप्पणी में से एक में कहा:

यह अजीब है: यदि मैं के रूप में ऊपर कोड पेस्ट (तुम्हारा या मेरा), यह ठीक है। लेकिन जैसे ही मैं अपने असली नाम के लिए मॉड्यूल का नाम बदलने के रूप में, त्रुटि मैं प्रकट होता है वर्णित

यह बहुत ही एक समस्या मैं अनुभव किया है के लिए इसी तरह लग रहा है। यह वजह से है क्योंकि मैं मॉड्यूल आयात करने के लिए विभिन्न संदर्भ रास्तों का उपयोग कर किया गया था था। एक मॉड्यूल के सदस्यों के अंदर एक परिणाम के रूप में एक दूसरे को नहीं पहुंच सका।

मैं माफी चाहता हूँ, लेकिन मैं किसी भी अधिक विवरण याद नहीं कर सकते हैं और मैं अपने (या मेरे) त्रुटि पुन: पेश करने में सक्षम नहीं किया गया है। यह शायद बेकार है, लेकिन मैंने सोचा कि मैं अपने अनुभव फिर भी साझा करेंगे: संदर्भ रास्तों और मॉड्यूल मिश्रण करने के लिए बहुत ही अजीब त्रुटि पैदा कर रहा है।

इसके अलावा कभी कभी VisualStudio बल्कि अजीब व्यवहार करती है। मैं वर्तमान में एक दोस्त के साथ मिलकर एक टाइपप्रति परियोजना पर काम कर रहा हूँ। कोड एक GitHub रेपो में संग्रहित है। हम दोनों एक ही संस्करण खींच लिया। मैं मेरे लिए ठीक काम किया है और उसके लिए त्रुटि संदेश के साथ छिड़का गया था। एक ही ओएस, टाइपप्रति, VisualStudio के समान संस्करण के समान संस्करण, ... दिलचस्प त्रुटि मॉड्यूल के लिए भी संबंधित था,। एक मॉड्यूल है कि आयात किया गया था "खाली" लग रहा था। सभी कोड है कि इस मॉड्यूल की सामग्री का उपयोग करने की कोशिश की लाल चिह्नित किया गया था। वह पुन: प्रारंभ VisualStudio और अचानक, कोड मान्य के रूप में स्वीकार कर लिया गया। हम कुछ भी बदल नहीं किया! यह भी समस्याओं के बिना संकलित।

19/01/2013 को 13:15
का स्रोत उपयोगकर्ता

वोट
0

हम्म, मैं इसके साथ कोई समस्या दिखाई देती है, लेकिन मत भूलना फ़ील्ड मान आरंभ करने के लिए, अन्यथा संकलक क्षेत्र उत्पन्न नहीं करेगा:

module MyModule {
    class MyPrivateClass {

    }

    export class MyPublicClass {
        private instance: MyPrivateClass; // MyPrivateClass is unknown
        constructor() {
           this.instance = new MyPrivateClass();
        }
    }
}
08/10/2012 को 13:40
का स्रोत उपयोगकर्ता

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