W naszym projekcie używamy RequireJS jako naszego modułu ładującego. Niektóre z naszych modułów wpłynie bibliotek globalnych, a tym samym nie będzie bezpośrednio stosowane w module są odwołuje sięTypeScript: kompilacja usuwa import bez odwołań
. Przykład:
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();
});
To działa zgodnie z oczekiwaniami, pisząc swoje moduły w JavaScript. Jednak krok po kroku tłumaczymy nasz projekt na TypeScript. Biorąc pod uwagę powyższy przykład, skutkuje:
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();
I podczas kompilacji to JavaScript, kompilator chce być pomocny i usuwa wszelkie niewykorzystane import. W związku z tym powoduje to uszkodzenie mojego kodu, ponieważ drugi importowany moduł nie jest dostępny.
Moja obecna praca wokół jest włączenie redundantny zadanie, ale to wygląda brzydko:
import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module
Czy ktoś wie, czy jest możliwe, aby skonfigurować kompilator nie maszynopis do optymalizacji modułów podczas kompilacji?
Zakładam, że nie można po prostu przenieść importu do odpowiedniego modułu? – Fenton
Są one w odpowiednim module. Mój projekt składa się głównie z widgetów. Każdy widget jest spakowany we własnym module. Używam Handlebars do szablonów i chcę spakować wynikowe widoki razem z moimi plikami definicji widgetów. Odwołując się do takiego widoku, wyeksponuje on metodę o tej samej nazwie na zmienną globalną "Kierownice". Dlatego nie muszę odwoływać się do modułu, ponieważ określił on metodę dla mnie. – thomaux