2015-06-21 11 views
10

Ich versuche Typescript und jspm zu verwenden, um eine eckige App zu erstellen. Das Problem ist, wenn Sie sicherstellen wollen, dass eine .js Datei geladen ist, in Jspm müssen Sie einen Import schreiben und es stellt sicher, dass die Datei geladen wird, bevor Sie Ihren Code ausführen. Aber Typescript entfernt meinen Import. Dies ist der Typescript-Code, den ich geschrieben habe. Ich muss angular-new-router laden, dann fügen Sie es meiner Modulabhängigkeit hinzu.Typescript entfernt Importanweisungen, die nicht im Code verwendet werden

import angular = require('angular'); 
import MainController = require('./controllers/MainController'); 
import NgNewRoute = require('angular-new-router'); 

console.log(angular.version); 

var appModule = angular.module('app', ['ngNewRouter']); 
MainController.register(appModule); 

export = appModule; 

Meine Frage: Wie kann ich anweisen, Typoskript nicht meinen Import-Anweisung zu entfernen, oder ich habe etwas anderes zu tun, um meine Router Lasten zu gewährleisten?

PS: ich kompilieren meine Typoskript Code mit Commonjs bis ES5.

EDIT: Diese Frage ist nicht das gleiche wie TypeScript: import module with only statements. Ich habe dieses Problem mit Bibliotheken von Drittanbietern zu arbeiten, also möchte ich sie nicht ändern. Auch ich benutze commonjs Muster, also repariert amd-dependency mein Problem nicht!

EDIT 2: Ein anderes Problem ist, dass ich andere Dateien als js-Module in meinem Typescript-Code nicht benötigen kann.

+0

möglich duplicat e von [TypeScript: Importmodul mit nur Anweisungen] (http://stackoverflow.com/questions/16455211/typescript-import-module-with-only-statements) – sainaen

+1

@sainaen: Das hängt irgendwie mit meiner Frage zusammen, aber nicht vollständig . Ich benötige Bibliotheken von Drittanbietern, so dass es keine gute Idee ist, sie zu ändern, um eine Variable oder etw zu exportieren. – alisabzevari

+1

Ja, die akzeptierte Antwort auf diese Frage ist nicht die beste. Sehen Sie den anderen, mit mehr Stimmen, es hat eine Verbindung zum offiziellen Issue-Tracker mit Antwort von einem der TypeScript-Teammitglieder und zwei möglichen Problemumgehungen, wie es vorschlägt, dass das Referenzieren des importierten Moduls ohne etwas damit zu tun. – sainaen

Antwort

3

Wie kann ich anweisen, Typoskript nicht meine Import-Anweisung zu entfernen, oder ich habe etwas anderes zu tun, um meinen Router Lasten zu gewährleisten

Sie benötigen

etwas aus dem import als Variable zB verwenden
import foo = require('./foo'); 
var bar = foo; // Like this 

statt nur:

import foo = require('./foo'); 
var bar:foo; // This will not cause an import in the generated JavaScript 
+1

Dies ist eine knifflige Art, das Problem zu lösen. – alisabzevari

+0

Dies ist, um den Anwendungsfall von * Lazy Loading * zu unterstützen: http://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html – basarat

+0

Ich kann nicht verstehen, die Beziehung Ihrer Antwort auf die bereitgestellter Link. Der Anwendungsfall "Lazy Loading" bezieht sich auf das bedingte Laden eines Typs, aber ich möchte, dass meine Angular Library vor dem Ausführen geladen wird. Oder ich möchte eine CSS-Datei laden, bevor mein Code ausgeführt wird. – alisabzevari

Verwandte Themen