Typescript: Módulos externos com AMD sempre requerem "exportações", mesmo quando não são usados

Criado em 13 set. 2014  ·  6Comentários  ·  Fonte: microsoft/TypeScript

Aqui está um pequeno módulo externo que exporta explicitamente um módulo:

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

O código gerado para isso é:

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

    return Foo;
});

Isso parece ruim para a AMD, já que você está exigindo a dependência mágica de "exportação", mas não a usa e, em vez disso, retorna Foo diretamente.

É irritante para os carregadores AMD mínimos, já que eles não podem assumir que o objeto de retorno do seu módulo é o seu objeto de "exportação" e têm que adivinhar que você realmente pretendia retornar algo que substituísse o objeto de "exportação" que você pediu.

Além disso, por que se preocupar em declarar uma dependência de 'require' quando não é usado?

Suggestion help wanted

Comentários muito úteis

Todos 6 comentários

Parece uma proposta razoável

Aprovado

Isso já foi implementado? Eu preciso disso...

@amandaol as tags sobre o problema indicam que cabe à comunidade implementá-lo. Junto com o problema ainda aberto significa que ele não foi implementado.

Pelo que vale a pena, agora usamos amdextract em nosso pipeline de construção após tsc para remover o require e exports desnecessários do JS emitido.

https://github.com/mehdishojaei/amdextract

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

MartynasZilinskas picture MartynasZilinskas  ·  3Comentários

Antony-Jones picture Antony-Jones  ·  3Comentários

weswigham picture weswigham  ·  3Comentários

uber5001 picture uber5001  ·  3Comentários

jbondc picture jbondc  ·  3Comentários