Typescript: yapıcı arabirim uygulama mümkün?

oy
4

Aşağıdaki arayüze sahiptir:

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

Sonra bir sınıf olarak uygulamak istiyoruz ve özellikleri, yapıcı belirlenmediğinden:

  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);
    }
  }

derleyici İsteği arabirimini uygulayan değil hiç Ancak göre. her şey inşaat aşamasında arayüzüne göre doldurdu ve JavaScript ile yazılmış, bu ince, türünü de mükemmel çalışıyor Kapatma araçları aynı şeyi kontrol çalışacak ederken ben, onu kontrol etmez anlamıyorum. Fikir ben prototip yarar yöntemleri var ama hala kolayca JSON dizeye dönüştürmek mümkün böylece bir sınıf olarak arabirim uygulamak istediğiniz olmasıdır.

Herhangi bir fikir?

Teşekkürler

Oluştur 08/10/2012 saat 12:02
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
7

Eğer bu sizin gerektirdiğini ifade ettik çünkü dil hizmeti statik olarak arayüzünün sizin beyanı analiz edecek ve headerüyesi olduğu sınıf tanımlamasının bölümünü oluşturmalıdır:

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";
    }
}

, Çok yalın javascript çıkışını Merak etmeyin:

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;
})();
Cevap 08/10/2012 saat 13:48
kaynak kullanıcı

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