В нашем проекте мы используем RequireJS в качестве нашего загрузчика модулей. Некоторые из наших модулей будут влиять на глобальные библиотеки и, следовательно, не будут напрямую использоваться в модуле, на который они ссылаются.
Пример:
define(['definitely/goingto/usethis/','just/referencingthis/forpackaging'], function(useThis) {
useThis.likeIPromised();
// the following call can only be made when the second required file is available
someGlobalAvailableVariable.someMethod();
});
Это работает как ожидается при написании моих модулей в JavaScript. Однако мы переводим наш проект шаг за шагом на TypeScript. В приведенном выше примере это приводит к:
import useThis = module("definitely/goingto/usethis/");
import whatever = module("just/referencingthis/forpackaging");
useThis.likeIPromised();
// I've written a definition file so the following statement will evaluate
someGlobalAvailableVariable.someMethod();
И при компиляции этого кода на JavaScript, компилятор хочет быть полезным и удаляет любые неиспользуемые импорты. Таким образом, это нарушает мой код, потому что второй импортированный модуль недоступен.
Моя текущая работа заключается в том, чтобы включить избыточное задание, но это выглядит уродливо:
import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module
Кто-нибудь знает, возможно ли настроить компилятор TypeScript для оптимизации модулей во время компиляции?