टाइपप्रति: निर्माता में इंटरफ़ेस को लागू करने के लिए संभव?

वोट
4

मैं निम्नलिखित इंटरफेस है:

interface SMJSPacket {
  header: {
    tag: string;
    method: string;
    type: string;
  };
  response?: {
    status: string;
    content: string;
  };
  event?: {
    key?: string;
    action?: string;
  };
  request?: {
    run?: string;
  };
}

और फिर मैं एक वर्ग के रूप में यह लागू करना चाहते हैं और गुण निर्माता में स्थापित किया जा रहा:

  class Request implements SMJSPacket {
    constructor(data: any, method: string) {
      this.header = {
        type: 'request',
        method: method || 'calld',
        tag: Request.getTag()
      }
      this.request = data;
    }
    static getTag(): string {
      return '_' + goog.now() + '_' + utils.getRandomBetween(1, 1000);
    }
  }

हालांकि करने के लिए संकलक अनुरोध इंटरफेस को लागू नहीं किया गया है अनुसार। मैं यह कैसे यह जाँच करता है समझ में नहीं आता है, जबकि यह सब कुछ निर्माण चरण में इंटरफ़ेस के अनुसार भरी है और इस ठीक, प्रकार बंद उपकरणों में एक ही बात भी पूरी तरह से काम करता है की जाँच के काम करेगा यदि जावास्क्रिप्ट में लिखा है। विचार यह है कि मैं एक वर्ग के रूप में इंटरफ़ेस को लागू करने तो मैं प्रोटोटाइप में उपयोगिता तरीकों हो सकता है, लेकिन अभी भी आसानी से JSON स्ट्रिंग के लिए कनवर्ट करने में सक्षम हो चाहता हूँ।

कोई विचार?

धन्यवाद

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


1 जवाब

वोट
7

भाषा सेवा स्थिर अपने इंटरफ़ेस के आपके घोषणा का विश्लेषण करेगा, और क्योंकि आप व्यक्त किया है यह जरूरी है कि आपके headerसदस्य, उस वर्ग घोषणा के हिस्सा होना चाहिए:

class Request implements SMJSPacket {
    header: { tag: string; method: string; type: string; };

    constructor(data: any, method: string) {
        this.header = {
            type: "request",
            method: (method || "calld"),
            tag: Request.getTag()
        };
    }

    static getTag(): string {
        return "tag stuff";
    }
}

चिंता मत करो, उत्पादन जावास्क्रिप्ट एक बहुत leaner है:

var Request = (function () {
    function Request(data, method) {
        this.header = {
            type: "request",
            method: (method || "calld"),
            tag: Request.getTag()
        };
    }
    Request.getTag = function getTag() {
        return "tag stuff";
    }
    return Request;
})();
08/10/2012 को 13:48
का स्रोत उपयोगकर्ता

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