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é?
Cela semble être une proposition raisonnable
Approuvé
SO question que j'ai posée à ce sujet: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies
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.
Commentaire le plus utile
SO question que j'ai posée à ce sujet: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies