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?
Verwenden '/// nicht' mit Modulen. Importieren Sie sie einfach. –