Typescript: Внешние модули с AMD всегда требуют «экспорта», даже если он не используется

Созданный на 13 сент. 2014  ·  6Комментарии  ·  Источник: microsoft/TypeScript

Вот небольшой внешний модуль, который явно экспортирует модуль:

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

Сгенерированный для этого код:

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

    return Foo;
});

Это похоже на плохой AMD, так как вам требуется магическая зависимость «экспорт», но затем вы не используете ее и вместо этого напрямую возвращает Foo.

Это раздражает минималистичных загрузчиков AMD, поскольку они не могут предположить, что объект, возвращаемый вашим модулем, является вашим объектом «экспорта», и должны догадываться, что вы действительно хотели вернуть что-то, что перекрывает запрашиваемый вами объект «экспорта».

Кроме того, зачем объявлять зависимость от require, когда оно не используется?

Suggestion help wanted

Самый полезный комментарий

ТАК вопрос, который я задал по этому поводу: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies

Все 6 Комментарий

Похоже на разумное предложение

Одобренный

ТАК вопрос, который я задал по этому поводу: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies

Это уже реализовано? Мне это нужно...

@amandaol теги по проблеме указывают на то, что это должно быть реализовано сообществом. В сочетании с тем, что проблема все еще не решена, означает, что она не была реализована.

Что бы это ни стоило, теперь мы используем amdextract в нашем конвейере сборки после tsc чтобы удалить ненужные require и exports из сгенерированного JS.

https://github.com/mehdishojaei/amdextract

Была ли эта страница полезной?
0 / 5 - 0 рейтинги