javascript - official - TypeScript: la compilación elimina las importaciones sin referencia
typescript official documentation (2)
En nuestro proyecto, usamos RequireJS como nuestro cargador de módulos. Algunos de nuestros módulos influirán en las bibliotecas globales y, por lo tanto, no se usarán directamente en el módulo al que se hace referencia.
Ejemplo:
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();
});
Esto funciona como se esperaba al escribir mis módulos en JavaScript. Sin embargo, estamos traduciendo nuestro proyecto paso a paso a TypeScript. Dado el ejemplo anterior, esto da como resultado:
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();
Y al compilar esto para JavaScript, el compilador quiere ser útil y elimina las importaciones no utilizadas . Como tal, esto rompe mi código, porque el segundo módulo importado no está disponible.
Mi trabajo actual es incluir una tarea redundante, pero esto se ve feo:
import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module
¿Alguien sabe si es posible configurar el compilador de TypeScript para que no optimice los módulos durante la compilación?
Puede hacer esto en la parte superior de su archivo (en lugar de import
):
/// <amd-dependency path="just/referencingthis/forpackaging" />
Una solución más agradable (probada con TS 1.8):
import ''just/referencingthis/forpackaging'';
La directriz triple-slash-dependiente amd parece funcionar solo si hay otras importaciones requeridas; solo tener directivas de amd-dependency da como resultado que el compilador de TypeScript genere JavaScript completamente sin una definición de módulo.