2013-01-21 37 views
5

एक व्युत्पन्न वर्ग में एक getter की super मूल्य तक पहुँचना काम करने के लिए प्रतीत नहीं होता:मैं उप-वर्ग में गेटटर के सुपरक्लास मूल्य को कैसे एक्सेस कर सकता हूं?

class Foo { 
    private _message:string = "Hello,"; 

    public get Message():string { 
     return this._message; 
    } 
} 

class Bar extends Foo { 
    public get Message():string { 
     return super.Message + " World"; 
    } 
} 

var snafu:Bar = new Bar(); 
document.write(snafu.Message); 

// Expected: "Hello, World" 
// Actual: "undefined World" 

कैसे मैं सही ढंग से एक getter और बनाने super मूल्य के उपयोग ओवरराइड कर सकते हैं?

+2

यह टाइपस्क्रिप्ट विरासत में कई "गॉथचास" में से एक है। टीएस सी # की तरह दिखता है कि यह आपको यह सोचने में मूर्ख बनाता है कि यह सी # की तरह काम करता है। Http://blog.wouldbetheologian.com/2012/11/various-typescript-weirdnesses.html कई और के लिए देखें :-( –

+0

अच्छा ब्लॉग। धन्यवाद। – JcFx

उत्तर

6

मैं जरूरी नहीं कि पुष्टि कर रहा हूँ कि आप इस दृष्टिकोण के साथ जारी है, लेकिन ...

class Bar extends Foo { 
    public get Message():string { 
     return Object.getOwnPropertyDescriptor(Foo.prototype, 'Message').get.apply(this) + ' World'; 
    } 
} 

मूलरूप विरासत यह विशेष रूप से स्पष्ट नहीं है।

+0

धन्यवाद। मेरे पास एक विशिष्ट मॉडल के रूप में बाहरी बाधा है (कैस्केडिंग प्रिंट शैलियों का) जो ओवरराइड गुणों का भारी उपयोग करता है - कम से कम यह दृष्टिकोण मुझे टीएस में इसके साथ काम करने देता है। – JcFx