टाइपप्रति: परिभाषित वर्ग और अलग फ़ाइलों में अपने तरीकों

वोट
4

यह एक फ़ाइल में एक वर्ग घोषित करने और अलग फ़ाइलों में अपने तरीकों को परिभाषित करना संभव है?

मैं के साथ कुछ श्रेणियां होती हैं एक बहुत तरीकों में से और यह बहुत अच्छा है, तो मैं उन्हें बाहर एक सा फैल सकता है किया जाएगा।

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


1 जवाब

वोट
6

संक्षिप्त उत्तर: टाइपप्रति कई फाइलों में विभाजित एक वर्ग परिभाषा का समर्थन नहीं करता।

वैकल्पिक हल : आप वर्ग के लिए सदस्यों से युक्त एक इंटरफेस को परिभाषित कर सकता है, और दो अलग अलग है कि इंटरफ़ेस को लागू करने कक्षाएं। तो दूसरे के लिए एक वर्ग से गुण Mixin, एक संयुक्त वर्ग बनाने के लिए। उदाहरण के लिए:

LargeClass.a.ts

interface LargeClass {
   methodA(): string;
   methodB(): string;
}

class LargeA implements LargeClass {
   methodA: () => string; // not implemented, needed since otherwise we don't extend LargeClass
   methodB() {
     return "Hello world";
   }
}

LargeClass.b.ts

class LargeB implements LargeClass {
   methodA() {
     return "Foo";
   }
   methodB: () => string; // not implemented, needed since otherwise we don't extend LargeClass
}

Usage.ts

// Using underscore's extend to copy implementation from A to B
var c:LargeClass = _.extend(new LargeA(), new LargeB());

// Manually mixing in a to b
var a = new LargeA();
var b:LargeClass = new LargeB();
for (var prop in a) {
    b[prop]=a[prop];
}

यदि आप वर्ग के लिए निर्माताओं की जरूरत है, हालांकि काम नहीं करेगा। और वास्तव में यह करने से इनकी ... वर्कअराउंड कोई भी कम है :)

ओह, वैसे, इस काम करता है क्योंकि टाइपप्रति कक्षाओं के लिए unitialised संपत्ति / फ़ील्ड प्रकार घोषणाओं उत्सर्जन नहीं करता है - यह केवल उन्हें प्रकार की जाँच के लिए उपयोग करता है।

मैं यह भी महसूस आप इंटरफेस और एक खूबसूरत रास्ते में बस वर्ग निर्माण के बिना यह कर सकते हैं कि ... मैं कैसे करना छोड़ देंगे कि अब के लिए पाठकों के लिए एक व्यायाम के रूप ...

03/10/2012 को 11:38
का स्रोत उपयोगकर्ता

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