tsc --module genera sempre lo stesso output, indipendentemente dall'argomento
-
12-12-2019 - |
Domanda
Sono abbastanza nuovo in Javascript, NodeJS e, ovviamente, TypeScript.Mi piacerebbe sperimentare i servizi del compilatore in src/services
(Windows) per fornire IntelliSense, ecc.per un editore.
Per quanto ne so, devo essere in grado di farlo require
il codice dei servizi TypeScript in un server NodeJS e comunicare con quello dall'editor.Non sono riuscito a trovare alcun codice dei servizi TypeScript specifico di NodeJS, quindi penso che dovrei compilare il codice dei servizi con --module amd
per renderlo disponibile a NodeJS tramite RequireJS.
Se quanto sopra è corretto, i miei tentativi di compilare il codice dei servizi con --module amd
produce esattamente gli stessi risultati dell'utilizzo del tipo di modulo predefinito (vedi sotto).
$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
Soluzione
Ciò è certamente fonte di confusione, ma il codice in LanguageService.ts non è in un "modulo" nel senso della definizione di "modulo" di AMD/RequireJS.
Le specifiche si riferiscono a cose all'interno di a module
blocco come "moduli interni".Questo è ciò che vedi in LanguageService.ts.Puoi pensarli più come contenitori o singleton che espongono un nome di primo livello (guardare la generazione del codice per un semplice modulo interno lo chiarisce un po').Li consumi come normali oggetti di livello superiore senza alcun caricatore di moduli.
Produrre esterno moduli (come indicato nelle specifiche) per require
si fa mettendo il export
direttiva su una dichiarazione di livello superiore in un file .ts (vedere la sezione specifica 9.2.1).Ci sono alcuni campioni (es.imageboard) disponibile per il download che esegue questa operazione se sei interessato.
Altri suggerimenti
Devi avere i tuoi moduli definiti come export module
, non il tuo module
e poi compilarlo con --m amd
O --module amd
.
Mi ci sono volute alcune ore per realizzarlo :)