2016-02-25 10 views
5
class Animal { 
    private name:string; 
    public Firstname:string; 
    constructor(theName: string) 
    { 
     this.name = theName; 
     this.Firstname=theName; 
    } 
} 

class Tiger { 
    function sample(){ 
     Animal animalName=new Animal('Tiger'); 
     document.body.innerHTML = animalName.name; 
    } 
    sample(); 
} 

हाय पर इस प्रकार के स्क्रिप्ट के लिए नया हूं, मैं यहां एक निजी वैरिएबल नाम बनाया है जिसका उपयोग मैंने क्लास कन्स्ट्रक्टर में किया था। अब कक्षा टाइगर में मैंने उदाहरण बनाया पशु वर्ग के लिए और उस निजी चर का उपयोग करने में सक्षम।क्या हम टाइपस्क्रिप्ट

मेरा प्रश्न जावा में है यदि हम करते हैं तो हमें त्रुटि मिल जाएगी। लेकिन टाइपस्क्रिप्ट में (क्योंकि टाइपस्क्रिप्ट ओप्स का समर्थन करता है) हमें कोई त्रुटि नहीं मिल रही है, इसके अलावा यह मूल्य दे रहा है कि यह कैसे संभव है?

उत्तर

11

पहला - आपका कोड संकलित नहीं होगा। टाइपस्क्रिप्ट नाम की पहुंच की जांच करेगा और आपको एक त्रुटि देगा। टाइपप्रति खेल के मैदान में अपने आप को जाँच करें: playground

दूसरा - यह संभव पहुँच निजी संपत्तियों है अगर आप उदाहरण के लिए, टाइपप्रति चेकों निकाल देगा:

console.log((<any>animalName).name) 

इस तथ्य यह है कि मूल रूप से जावास्क्रिप्ट एक धारणा नहीं है की वजह से काम करता है निजी गुणों (private properties)। और जैसा कि जावास्क्रिप्ट को टाइपस्क्रिप्ट संकलित किया गया है, आपके पास ऐसी संभावना है।

+0

+1 अच्छा जवाब। इस बात पर निर्भर होना चाहिए कि इस तथ्य पर भरोसा करते हुए कि 'निजी' रनटाइम पर निजी नहीं है, कुछ बिंदु पर कोड माइग्रेशन कठिन बना देगा + अत्यधिक कमी बनाए रखने योग्यता। ओपी को अपने डिजाइन पर पुनर्विचार करना चाहिए। – basarat