2013-06-21 13 views
5

से टाइपस्क्रिप्ट कॉल फ़ंक्शन बेसक्लास से ओवरराइट जैसे फ़ंक्शन को कॉल करने का कोई तरीका है।बेस क्लास

बेस कक्षा

export class BaseClass { 
    constructor() { 
    //do something asynchronous 
    //than call initialized 
    } 
} 

विरासत कक्षा

export class InheritanceClass extends BaseClass { 
    initialized() { 
    // get called from base class 
    } 
} 

उत्तर

7

आप इस तरह मतलब है:

class Base { 
    constructor(){ 
     setTimeout(()=>{ 
      this.initialized(); 
     }, 1000); 
    } 

    initialized(){ 
     console.log("Base initialized"); 
    } 
} 

class Derived extends Base { 
    initialized(){ 
     console.log("Derived initialized"); 
    } 
} 

var test:Derived = new Derived(); // console logs "Derived initialized" - as expected. 

वर्क्स Playground में अच्छी तरह से (setTimeout() पर अजीब लाल अंडरलाइन को अनदेखा करें, जो मुझे लगता है कि यह एक बग है - यह संकलित करता है और ठीक चलता है।)

आपको Base पर मौजूद विधि की आवश्यकता है, लेकिन आप इसे Derived में ओवरराइड कर सकते हैं (इस मामले में, super.initialized() पर कॉल किए बिना)।

+0

तो यदि बेस क्लास कहता है कि पशु और व्युत्पन्न वर्ग कुत्ता था तो आपके पास पैदल चलने की विधि हो सकती थी, लेकिन सांप और पक्षी के बारे में क्या आपके पास अपनी पशु वर्ग पर एक स्लिम और फ्लाई विधि होगी? –

+0

विभिन्न उपयोग के मामले। मैं सुझाव नहीं दे रहा हूं कि टाइपस्क्रिप्ट में अमूर्त सदस्यों की कोई आवश्यकता नहीं है, सिर्फ यह जवाब ओपी के अनुरोध को "एसिंक्रोनस कुछ करने, फिर प्रारंभ करने के लिए कॉल करने" और "बेसक्लस से फ़ंक्शन को कॉल करने की क्षमता के लिए ठीक से संबोधित करता है (टाइपो टाइप करें :) ओवरराइड " – JcFx

2

आदेश है कि आप अमूर्त वर्ग के एक सार सदस्य के रूप में प्रारंभ किया है की आवश्यकता होगी करने के लिए। वर्तमान में टाइपप्रति का समर्थन नहीं करता इस तथापि सुविधा के लिए कहा गया है और एक काम मद इसके लिए खुला है:

http://typescript.codeplex.com/workitem/395

+0

मुझे यकीन नहीं है कि यह सही है। निचे देखो। – JcFx

+0

यदि आप बेस पर मौजूद नहीं होना चाहते हैं तो यह जवाब है अन्यथा यह ओवरराइड बन जाता है। कड़ाई से बोलते हुए इसके चारों ओर बदसूरत तरीके हैं लेकिन उन्हें प्रोत्साहित नहीं किया जाना चाहिए। –

+0

प्रोत्साहित नहीं किया जाना चाहिए? यह सिर्फ एक साधारण ओवरराइड है। ओपी ने एक अमूर्त विधि के लिए नहीं पूछा है - केवल एक को ओवरराइड करने की क्षमता। – JcFx