टाइपप्रति में निजी स्थिर गुणों

वोट
9

मैं इस नीचे की तरह कुछ करते हैं, कैसे मैं कक्षा बाहर संपत्ति का उपयोग कर सकते हैं?

class Person
{
    private static name: string;
}

console.log(Person.name);

यह दुर्गम नहीं करनी चाहिए?

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


3 जवाब

वोट
12

यह एक त्रुटि होना चाहिए लेकिन नहीं है। कल्पना से, खंड 8.2.1:

यह की पहुंच निर्दिष्ट करने के लिए संभव नहीं है स्टैटिक्स-वे प्रभावी रूप से हमेशा सार्वजनिक कर रहे हैं।

स्टैटिक्स पर पहुंच क्षमता संशोधक कुछ टीम अतीत में माना गया है। आप एक मजबूत उपयोग के मामले है, तो आप पर इस लाना चाहिए codeplex साइट!

10/10/2012 को 21:17
का स्रोत उपयोगकर्ता

वोट
1

ठीक है, वास्तव में नहीं है, वास्तव में आप कर सकते हैं। हो सकता है कि सबसे महत्वपूर्ण टाइपप्रति के बारे में पूछने के लिए है संस्करण यह संबंधित है। मेरे पास है v1.5 बीटा , मेरी VS2012 स्थापना के हिस्से (हाँ, यह काम करता है के बावजूद यह VS2013 पर लक्षित है)।

मैं इस तरह एक वर्ग है:

class ItemListPreProcessor {

    private static names: string[] = [ 'Name', 'Age' ];

    static createHeader = (eltName: string) => {
        var pdiv = $(eltName);
        pdiv.html('<table><thead><tr></tr></thead></tr><tbody></tbody></table>');
        var row = $('tr', pdiv);
        ItemListPreProcessor.names.forEach((n) => {
            row.append('<th>' + n + '</th>');
        });
        return $('tbody', pdiv);
    };
}

नमूने में आप दोनों को देख सकते हैं ऊपर privateऔर static। वर्ग निम्नलिखित जावास्क्रिप्ट को संकलित किया गया है:

var ItemListPreProcessor = (function () {
    function ItemListPreProcessor() {
    }
    ItemListPreProcessor.names = ['Name', 'Age'];

    ItemListPreProcessor.createHeader = function (eltName) {
        var pdiv = $(eltName);
        pdiv.html('<table><thead><tr></tr></thead></tr><tbody></tbody></table>');
        var row = $('tr', pdiv);
        ItemListPreProcessor.names.forEach(function (n) {
            row.append('<th>' + n + '</th>');
        });
        return $('tbody', pdiv);
    };
    return ItemListPreProcessor;
})();

और वहाँ (इस आप देख) या तो यह संकलन के साथ कोई समस्या नहीं है, साथ ही यह क्रियान्वित करने के रूप में (यह आप पर भरोसा करना चाहिए, या, यदि आप चाहें, तो कोशिश)।

20/05/2015 को 14:38
का स्रोत उपयोगकर्ता

वोट
0
    class Person
{
    private static theName: string = "John";
    static get name():string{
        return Person.theName;
    }
}

console.log(Person.name);

अगर एक स्थिर संपत्ति निजी है हम इसे उपयोग करने के लिए एक स्थिर प्राप्त विधि प्रदान करने के लिए की जरूरत है। यह एक आम समस्या का समाधान नहीं हो सकता है, लेकिन यह एक ही रास्ता मैं के बारे में पता सीधे एक निजी स्थिर संपत्ति का उपयोग करने की है। दूसरी ओर, यदि आप एक दूसरी विधि प्राप्त जोड़ने के लिए है, तो आप भी एक instantiated ऑब्जेक्ट से संपत्ति का उपयोग करने का इरादा हो सकता है। दोनों मिल तरीकों में एक ही नाम हो सकता है के बाद से स्थिर प्राप्त विधि instantiated ऑब्जेक्ट के लिए अदृश्य हो जाएगा।

16/11/2015 को 20:52
का स्रोत उपयोगकर्ता

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