Pregunta

Soy bastante nuevo en Javascript, NodeJS y, obviamente, TypeScript.Me gustaría experimentar con los servicios del compilador en src/services (Windows) para proporcionar intellisense, etc.para un editor.

Por lo que puedo decir, necesito poder require el código de servicios TypeScript en un servidor NodeJS y comunicarse con él desde el editor.No pude encontrar ningún código de servicios TypeScript específico de NodeJS, así que creo que tendría que compilar el código de servicios con --module amd para ponerlo a disposición de NodeJS a través de RequireJS.

Si lo anterior es correcto, mis intentos de compilar el código de servicios con --module amd produce exactamente los mismos resultados que usar el tipo de módulo predeterminado (ver más abajo).

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
¿Fue útil?

Solución

Es cierto que esto es confuso, pero el código en languageService.ts no está en un "módulo" en el sentido de la definición de "módulo" de AMD/RequireJS.

La especificación se refiere a cosas dentro de un module bloque como "módulos internos".Eso es lo que estás viendo en languageService.ts.Puede pensar en ellos más como contenedores o singletons que exponen un nombre de nivel superior (mirar la generación de código para un módulo interno simple aclara esto bastante).Los consume como objetos normales de nivel superior sin ningún cargador de módulos.

Productor externo módulos (como los nombra la especificación) para require se hace poniendo el export directiva en una declaración de nivel superior en un archivo .ts (consulte la sección de especificaciones 9.2.1).Hay algunas muestras (p. ej.imageboard) disponibles para descargar que hacen esto si estás interesado.

Otros consejos

Tienes que tener tus módulos definidos como export module, no tu module y luego compilarlo con --m amd o --module amd.

Me tomó unas horas darme cuenta :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top