Wie kann ich abhängige Module in Typoskript AMD-Module definieren

stimmen
6

Wie kann ich die abhängigen Module in einem AMD-Modul mit Typoskript definieren, einschließlich, zum Beispiel, jQuery und unterstreichen. Mit Hilfe von JavaScript ich zum Beispiel wie folgt aus:

define('moduleA',
    ['jquery', 'underscore'], function ($, _) {
    }
});

Wie kann dies tun, so dass Typoskript Compiler diesen Code erzeugt.

Veröffentlicht am 08/10/2012 um 14:44
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
3

Mit der aktuellen Implementierung des Compilers (0,8) die Art und Weise zu erreichen, was Sie suchen, ist die folgende.

test.ts:

import jquery = module("jquery");
import underscore = module("underscore");

export module A {
    console.log(jquery.$ + underscore._);
}

jquery.ts:

export var $ = null;

underscore.ts:

export var _ = null;

wenn Sie kompilieren test.ts den Modulschalter:

tsc --module AMD test.ts

es wird die folgende JS-Datei für Sie erstellen:

define(["require", "exports", "jquery", "underscore"], function(require, exports, __jquery__, __underscore__) {
    var jquery = __jquery__;
    var underscore = __underscore__;
    (function (A) {
        console.log(jquery.$ + underscore._);
    })(exports.A || (exports.A = {}));
})

Beachten Sie, dass Import-Anweisungen innerhalb des Moduls gelegt wird es codegen richtig auf einen Fehler aufgrund zu beachten. Das Team arbeitet derzeit an einer Lösung an diesem Punkt, aber hoffentlich, dass Sie sollten nicht blockieren.

Beantwortet am 08/10/2012 um 17:22
quelle vom benutzer

stimmen
2

Dies funktioniert derzeit nicht richtig in Typoskript aufgrund eines Fehlers in dem Compiler (siehe Stackoverflow ). Was würden Sie tun müssen, ist ein Modul zu definieren , moduleAdie Importe jqueryund underscoreund dann das Kompilieren mit -module amd. Grundsätzlich müssen Sie die folgenden drei Dateien:

moduleA.ts

export module moduleA {
    import jquery = module("jquery");
    import underscore = module("underscore");
    console.log(jquery.jquery);
    console.log(underscore.underscore);
}

jquery.ts

export module jquery {
    var jquery = "jquery";
}

underscore.ts

export module underscore {
    var underscore = "underscore";
}

Kompilieren diese drei Dateien mit tsc -module amdAusbeuten für den folgenden Code moduleA.js:

define(["require", "exports"], function(require, exports) {
    (function (moduleA) {
        var jquery = __jquery__;

        var underscore = __underscore__;

        console.log(jquery.jquery);
        console.log(underscore.underscore);
    })(exports.moduleA || (exports.moduleA = {}));

})

Wie ich schon sagte oben, aufgrund der Compiler einen Fehler, dieser Code ist eigentlich falsch und wird über fehlende beschweren __jquery__zur Laufzeit. Sobald jedoch dieser Fehler behoben wird der amdLader der node.jssollte die Module laden können.

Beantwortet am 08/10/2012 um 15:05
quelle vom benutzer

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