Typescript: Externe Module mit AMD erfordern immer "Exporte", auch wenn sie nicht verwendet werden

Erstellt am 13. Sept. 2014  ·  6Kommentare  ·  Quelle: microsoft/TypeScript

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?

Suggestion help wanted

Hilfreichster Kommentar

Alle 6 Kommentare

Scheint ein vernünftiger Vorschlag zu sein

Genehmigt

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.

https://github.com/mehdishojaei/amdextract

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen