2017-01-27 3 views
9

Ich benutze Typescript mit AMD und require.js, aber ich kann den Typskript-Compiler nicht zur Ausgabe von Code aufrufen, der nach dem Laden der Module ausgeführt wird.Typescript mit AMD und require.js

Dies ist main.ts:

import { foo } from './bar'; 

foo('world'); 

Dies ist bar.ts:

export function foo(name: string) { 
    alert('Hello ' + name); 
} 

ich diese kompilieren mit der folgenden tsconfig.json Datei:

{ 
    "compilerOptions": { 
     "alwaysStrict": true, 
     "module": "amd", 
     "outFile": "client.js", 
     "target": "es5" 
    }, 
    "files": [ 
     "main.ts" 
    ] 
} 

und es in meinem HTML wie folgt :

<script data-main="client/client.js" src="/static/require.js"></script> 

Allerdings sieht der generierte JavaScript-Code wie folgt aus:

define("bar", ["require", "exports"], function (require, exports) { 
    "use strict"; 
    function foo(name) { 
     alert('Hello ' + name); 
    } 
    exports.foo = foo; 
}); 
define("main", ["require", "exports", "bar"], function (require, exports, bar) { 
    "use strict"; 
    bar.foo('world'); 
}); 

Alles ist in Ordnung, außer der Tatsache, dass ich möchte den Code innerhalb des main Modul direkt auszuführen. So soll die letzte Definition

define(["require", "exports", "bar"], ... 

anstelle von

define("main", ["require", "exports", "bar"], ... 

Derzeit würde ich ein drittes Skript in JavaScript geschrieben muß nur die main Modul zu laden, und ich halte es für schlechten Stil hat die main Modul als wiederverwendbarer Code.

Wie bekomme ich den Typskript-Compiler zur Ausgabe main.ts als eine ausführbare Definition anstelle einer Moduldefinition?

Antwort

-1

Wenn Sie 'import ...' verwenden, kompiliert TypeScript AMD-Module wie in Ihrer Frage angezeigt. Könnten Sie den folgenden Code ausprobieren (überprüfen Sie auch dieses Tutorial: http://www.codebelt.com/typescript/typescript-amd-with-requirejs-tutorial/), um zu überprüfen, ob es zu der Ausgabe führt, nach der Sie fragen?

/// <reference path="[YOUR IMPORT FILE]" /> 
/// ... 

/** 
* Main entry point for RequireJS 
*/ 
require(
    [ 
     // YOUR IMPORT DEFINITIONS 
    ], 
    (/* YOUR IMPORT VARIABLES */) => { 
     'use strict'; 

     // YOUR CODE HERE 
    } 
); 
+1

Verwenden '/// nicht' mit Modulen. Importieren Sie sie einfach. –

Verwandte Themen