2012-10-03 18 views
8

In AMD (wie in requirejs implementiert) kann man Module definiert als Abhängigkeiten einbezogen werden, zum Beispiel:Maschinenschrift kompilieren AMD-Module mit den erforderlichen definiert

define(['require','exports'], function(require, exports) { 
    var externalDep = require('path/to/depModule'); 

    // Use the module somewhere. 
}); 

habe ich versucht, die --module amd und er gibt ein richtig AMD-Modul verwendbar durch requirejs.

Ist es möglich, Abhängigkeiten innerhalb der Quelle der TypeScript-Quelldatei zu definieren, die in etwa dem obigen Beispiel entspricht?

Antwort

13

Sie müssen Ihre Module "exportieren";

export module depModule { 
    export class A { 
    } 
} 

, die in JavaScript-Code transalate werden, die wie folgt aussieht:

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 

und dann Sie sie verbrauchen, indem Sie "Import":

module otherModule { 
    import depModule = module('depModule'); 
    var a = new depModule.depModule.A(); 
} 

Sie müssen die Art der spezifizieren Ihre Modulcode-Generierung für den Compiler mit --module AMD.

+0

Schöne Antwort, können Sie erklären, wie Sie Visual Studio mit diesem Compiler-Parameter einrichten? – Eric

+7

@Eric - Ich würde vorschlagen, dass Sie die 'Web Essentials 2012' Erweiterung von Mads Kristensen installieren. Auf der Optionen-Seite der Erweiterung können Sie angeben, dass TypeScript-Dateien mit der Option AMD kompiliert werden sollen. Sie können es hier herunterladen/finden: http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6 –

+0

Es sollte beachtet werden, dass ab Version 3.0 die gesamte TypeScript-Unterstützung aus Web Essentials entfernt wurde. siehe [Änderungsprotokoll] (http://vswebessentials.com/changelog). Diese Funktionalität sollte in Visual Studio verfügbar sein. – Chris