Hier ist ein kleines externes Modul, das ein Modul explizit exportiert:
module Foo {
export var foo = 42;
}
export = Foo;
Der dafür generierte Code lautet:
define(["require", "exports"], function(require, exports) {
var Foo;
(function (Foo) {
Foo.foo = 42;
})(Foo || (Foo = {}));
return Foo;
});
Dies fühlt sich wie eine schlechte AMD an, da Sie die magische Abhängigkeit "exportieren" benötigen, diese dann aber nicht verwenden und stattdessen Foo direkt zurückgeben.
Es ist ärgerlich für minimale AMD-Lader, da sie nicht davon ausgehen können, dass die Objektrückgabe Ihres Moduls Ihr "Export" -Objekt ist, und Sie müssen raten, dass Sie wirklich etwas zurückgeben wollten, das das von Ihnen angeforderte "Export" -Objekt überschreibt.
Warum sollte man sich außerdem die Mühe machen, eine Abhängigkeit von "erfordern" zu deklarieren, wenn sie nicht verwendet wird?
Scheint ein vernünftiger Vorschlag zu sein
Genehmigt
SO Frage, die ich dazu gestellt habe: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies
Wurde dies bereits umgesetzt? Ich brauche es...
@amandaol Die Tags zu diesem Problem weisen darauf hin, dass es an der Community liegt, sie zu implementieren. In Verbindung mit dem noch offenen Problem bedeutet dies, dass es nicht implementiert wurde.
Für das, was es wert ist, verwenden wir jetzt amdextract
in unserer Build-Pipeline nach tsc
, um die unnötigen require
und exports
aus dem emittierten JS zu entfernen.
Hilfreichster Kommentar
SO Frage, die ich dazu gestellt habe: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies