Typescript: Les modules externes avec AMD nécessitent toujours des «exportations» même lorsqu'ils ne sont pas utilisés

Créé le 13 sept. 2014  ·  6Commentaires  ·  Source: microsoft/TypeScript

Voici un petit module externe qui exporte explicitement un module:

module Foo {
    export var foo = 42;
}
export = Foo;

Le code généré pour cela est:

define(["require", "exports"], function(require, exports) {
    var Foo;
    (function (Foo) {
        Foo.foo = 42;
    })(Foo || (Foo = {}));

    return Foo;
});

Cela ressemble à un mauvais AMD puisque vous avez besoin de la dépendance magique "exporte", mais que vous ne l'utilisez pas et que vous renvoyez directement Foo.

C'est ennuyeux pour les chargeurs AMD minimaux car ils ne peuvent pas supposer que le retour d'objet de votre module est votre objet "exports" et doivent deviner que vous vouliez vraiment retourner quelque chose qui écrasait l'objet "exports" que vous aviez demandé.

De plus, pourquoi se donner la peine de déclarer une dépendance sur «require» quand il n'est pas utilisé?

Suggestion help wanted

Commentaire le plus utile

Tous les 6 commentaires

Cela semble être une proposition raisonnable

Approuvé

Cela a-t-il déjà été mis en œuvre? J'en ai besoin...

@amandaol les balises sur le problème indiquent que c'est à la communauté de l'implémenter. Associé au problème toujours ouvert, cela signifie qu'il n'a pas été implémenté.

Pour ce que ça vaut, nous utilisons maintenant amdextract dans notre pipeline de construction après tsc pour supprimer les require et exports inutiles du JS émis.

https://github.com/mehdishojaei/amdextract

Cette page vous a été utile?
0 / 5 - 0 notes