2016-05-18 33 views
1

Ich habe gerade angefangen mit TypeScript und ich habe 2 Dateien erstellt, lib.ts und main.ts und wählte AMD-Module während der Kompilierung. Der Compiler erzeugt eine Datei mit Definitionen, ruft jedoch keine auszuführende Funktion auf. Der Inhalt der Datei main.ts wird nur in ein Modul eingeschlossen. Hier sind die Dateien:Wie kann ich Code, der von TypeScript mit AMD-Modulen generiert wird, tatsächlich ausführen?

lib.ts

export namespace Library { 
    export class Write { 
     constructor() { 
      console.log("hello world"); 
     } 
    } 
} 

main.ts

import {Library} from "./lib"; 
new Library.Write(); 

Der Compiler-Befehl:

tsc main.ts --outFile out.js --module amd 

out.js

define("lib", ["require", "exports"], function (require, exports) { 
    "use strict"; 
    var Library; 
    (function (Library) { 
     var Write = (function() { 
      function Write() { 
       console.log("hello world"); 
      } 
      return Write; 
     }()); 
     Library.Write = Write; 
    })(Library = exports.Library || (exports.Library = {})); 
}); 
define("main", ["require", "exports", "lib"], function (require, exports, lib_1) { 
    "use strict"; 
    new lib_1.Library.Write(); 
}); 

Wie kann ich den Compiler dazu bringen, tatsächlich Code zu erzeugen, der ausgeführt wird? Die Dokumentation hilft nicht.

Antwort

2

Die Option --outFile sollte nicht verwendet werden. Das AMD-Format muss mit dem asynchronen Ladeprogramm RequireJS in Browsern verwendet werden. RequireJS lädt die mehreren generierten JavaScript-Dateien bei Bedarf.

Außerdem müssen Sie die RequireJS-Laufzeit im Browser laden. Cf the documentation.

Hinweis: Über den Code export namespace wird nicht empfohlen, Namespaces und Module zu mischen, siehe this answer.