Búsqueda de sitios web

Cómo definir una clase singleton de JavaScript en un archivo de declaración de TypeScript


El siguiente código está en mi archivo "test-file.js", quiero trasladarlo a un archivo "test-file.d.ts" para que luego pueda importarlo en mi "test1.ts" y programar utilizando los "Tipos" de JavaScript en Typescript.

No he podido averiguar cómo en mi "test-file.d.ts" definir lo siguiente de tal manera que la misma implementación exista desde Typescript.

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

No quiero volver a codificar este archivo en un archivo *.ts, en cambio, como se mencionó arriba, quiero importarlo en mi "test1.ts".

Gracias.

Respuesta #1

Déjame ver si esto te parece bien:

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

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

Y puedes usarlo así:

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

Como puedes ver, declararás el static createMessage(): Message; como estático y no la clase.