2016-07-19 9 views
2

Der folgende Code ist in meiner "test-file.js" -Datei, ich möchte es in eine "test-file.d.ts" -Datei portieren, so dass ich kann es dann in meine "test1.ts" importieren und gegen die JavaScript "Typen" in Typescript codieren.So definieren Sie eine JavaScript-Singleton-Klasse in einer Typoskript-Deklarationsdatei

Ich konnte nicht herausfinden, wie in meiner "test-file.d.ts", um die unten so zu definieren, dass die gleiche Implementierung von Typescript existiert.

(function(application) { 

application.Message = function() { 

    this.m_messageContents = "New Message"; 

}; 

application.Message.prototype.getApplicationMessageContents = function() { 
    return this.m_messageContents; 
}; 

application.SystemFactory = (function(){ 

var factory = 
    /** 
    * @lends application.SystemFactory 
    */ 
    { 
     createMessage: function() { 
      return application.Message(); 
     } 
    }; 
    return factory; 

}()); 

}(application)); 

Ich will nicht-Code erneut diese Datei in eine * .ts-Datei, statt wie oben angegeben ich es in meinem „test1.ts“ importieren möchten.

Danke.

Antwort

0

Lassen Sie mich sehen, ob dies für Sie in Ordnung ist:

declare module application { 
    export class Message { 
     getApplicationMessageContents(): string; 
    } 

    export class SystemFactory { 
     static createMessage(): Message; 
    } 
} 

Und Sie können wie folgt verwenden:

let message = application.SystemFactory.createMessage(); 
let content = message.getApplicationMessageContents(); 

Wie Sie sehen können, werden Sie die static createMessage(): Message; als statisch deklarieren und nicht die Klasse.

+0

Das ist in der Nähe, aber es muss so sein ... lass message = application.SystemFactory.createMessage(); und let content = message.getApplicationMessageContents(); Der Code müsste so aussehen ... (das funktioniert natürlich nicht) deklarieren Modul-Anwendung { Export-Klasse Nachricht { getApplicationMessageContents(): string; } statische Klasse exportieren SystemFactory { createMessage(): Nachricht; } } – Daz

+0

Ok, ich irre ... ich werde die Antwort aktualisieren – Diullei

+0

Vielen Dank, Dullei. – Daz

Verwandte Themen