2015-06-21 11 views
10

Sto tentando di utilizzare Typescript e jspm per creare un'app angolare. Il problema è quando si desidera garantire un file .js caricato, in jspm è necessario scrivere un'importazione e garantisce che il file verrà caricato prima di eseguire il codice. Ma Typescript rimuove la mia importazione. Questo è il codice Typescript che ho scritto. Devo caricare angular-new-router quindi aggiungerlo alla dipendenza del mio modulo.Il dattiloscritto rimuove le istruzioni di importazione non utilizzate nel codice

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; 

La mia domanda: Come posso indicare tipografico di non rimuovere la mia dichiarazione di importazione, o devo fare qualcosa di diverso per assicurare il mio carichi router?

PS: Compilare il mio codice dattiloscritto in ES5 con commonjs.

MODIFICA: Questa domanda non è la stessa di TypeScript: import module with only statements. Ho questo problema a lavorare con le librerie di terze parti, quindi non voglio cambiarle. Inoltre sto usando pattern commonjs quindi amd-dependency non risolve il mio problema!

EDIT 2: Un altro problema è che non posso richiedere file diversi dai moduli js nel mio codice Typescript.

+0

possibile DUPLICAT e di [TypeScript: import module with only statements] (http://stackoverflow.com/questions/16455211/typescript-import-module-with-only-statements) – sainaen

+1

@sainaen: Questo è in qualche modo correlato alla mia domanda ma non completamente . Ho bisogno di librerie di terze parti, quindi non è una buona idea cambiarle per esportare una variabile o una sth. – alisabzevari

+1

Sì, la risposta accettata su quella domanda non è la migliore. Vedi l'altro, con più voti, ha un link al tracker ufficiale dei problemi con risposta da parte dei membri del team TypeScript e due possibili soluzioni alternative, come suggerire che solo fare riferimento al modulo importato senza far nulla con esso può aiutare. – sainaen

risposta

3

Come posso istruire tipografico a non rimuovere la mia dichiarazione di importazione, o devo fare qualcosa di diverso per assicurare il mio carichi router

È necessario utilizzare qualcosa dal import come ad esempio variabile

import foo = require('./foo'); 
var bar = foo; // Like this 

invece di:

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

Questo è un modo complicato per risolvere il problema. – alisabzevari

+0

Questo serve per supportare il caso d'uso di * lazy loading *: http://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html – basarat

+0

Non riesco a capire la relazione della tua risposta al collegamento fornito. Il caso di utilizzo del caricamento pigro è correlato al caricamento condizionale di un tipo, ma voglio che la mia libreria angolare venga caricata prima di eseguirla; O voglio caricare un file css prima dell'esecuzione del mio codice. – alisabzevari

Problemi correlati