Typoskript AMD-Implementierung schlecht mit Javascript / RequireJS
Wenn ich dieses ts Modul habe:
export function say(){
console.log("said");
}
und ich kompiliere es mit der amd-Option, die ich ganz einfach von einem ts-Client aus verwenden kann:
import foo = module("tsmodule")
foo.say();
export var x = 123;
Wenn ich jedoch Javascript habe, das dem ts-Modul entspricht:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
Es gibt keine einfache Möglichkeit, es zu verwenden. Die einfachste mögliche Lösung:
// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;
// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();
export var x = 123;
import foo = module("tsmodule")
foo.say();
schlägt aufgrund eines Fehlers fehlhttp://requirejs.org/docs/errors.html#notloaded . Da "jsmodule" im generierten Typoskript nicht an den define-Aufruf übergeben wurde.
Die zwei Problemumgehungen, die ich habe
Verwenden Sie nicht den Import / Export (Sprachfunktionen gehen verloren)use require ([]) (kann immer noch nichts exportieren, was vom Aufruf require ([]) abhängt)Einschränkungen haben:https://github.com/basarat/typescript-requirejs . Gibt es eine andere Art und Weise? Wenn nicht, können Sie hier abstimmen:https://typescript.codeplex.com/workitem/948 :)