टाइपप्रति मॉड्यूल और वर्ग एक साथ?

वोट
4

मैं वर्तमान में OpenLayers के लिए एक टाइपप्रति परिभाषा फ़ाइल का निर्माण करने की कोशिश कर रहा हूँ।

समस्या यह है कि OpenLayers में वहाँ कुछ वर्गों है कि दोनों एक मॉड्यूल और टाइपप्रति में एक वर्ग के लिए अनुवाद होगा रहे हैं।

उदाहरण के लिए वहाँ है Protocolमॉड्यूल में वर्ग OpenLayersऔर वहाँ एक वर्ग है Responseमॉड्यूल में OpenLayers.Protocol

मैं कैसे कर सकता है कि मॉडल टाइपप्रति में? मैं कर सकता हूँ Protocolएक वर्ग और परिभाषित Responseएक आंतरिक वर्ग कि निर्यात किया जाता है के रूप में वर्ग? आपको लगता है कि समस्या को हल करने के बारे में कैसे जाना होगा?

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


2 जवाब

वोट
1

घोषित Responseएक के रूप में staticके क्षेत्र Protocolएक निर्माता के प्रकार के साथ, एक लौट रहा interfaceहै कि परिभाषित करता है Responseवर्ग:

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: new () => IProtocolResponse;
    }
}

var response = new OpenLayers.Protocol.Response();
response.foo();

संपादित करें:

या के रूप में एंडर्स में बताते हैं इस चर्चा सूची सवाल , आप इस तरह से भीतरी वर्ग के लिए कई निर्माताओं के हो सकते हैं:

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: {
            new (): IProtocolResponse;
            new (string): IProtocolResponse;
        };
    }
}

var response = new OpenLayers.Protocol.Response('bar');
response.foo();

दोनों दृष्टिकोण का मुख्य नकारात्मक पक्ष यह है कि आप से एक वर्ग प्राप्त नहीं सकता है OpenLayers.Protocol.Response

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

वोट
0

यहाँ मेरी अद्यतन जवाब है, जो मुझे आशा है कि मदद करता है - यह मिलना चाहिए आप ओपन टाइप परिभाषित करने पर शुरू कर दिया:

declare module OpenType {
   export class Protocol {
       constructor();
       Request;
   }
}

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
09/10/2012 को 14:37
का स्रोत उपयोगकर्ता

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