Pergunta

Sou muito novo em Javascript, NodeJS e --obviamente-- TypeScript.Eu gostaria de experimentar os serviços do compilador em src/services (Windows) para fornecer intellisense, etc.para um editor.

Tanto quanto posso dizer, preciso ser capaz de require o código de serviços TypeScript em um servidor NodeJS e comunicar-se com ele a partir do editor.Não consegui encontrar nenhum código de serviço TypeScript específico do NodeJS, então acho que teria que compilar o código de serviço com --module amd para disponibilizá-lo para NodeJS via RequireJS.

Se o acima estiver correto, minhas tentativas de compilar o código de serviços com --module amd produz exatamente os mesmos resultados que usar o tipo de módulo padrão (veja abaixo).

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

Solução

Isso é reconhecidamente confuso, mas o código em languageService.ts não está em um 'módulo' no sentido da definição de 'módulo' da AMD/RequireJS.

A especificação refere-se a coisas dentro de um module bloco como "módulos internos".Isso é o que você vê em languageService.ts.Você pode pensar neles mais como contêineres ou singletons que expõem um nome de nível superior (observar a geração do código para um módulo interno simples esclarece um pouco isso).Você os consome como objetos normais de nível superior, sem nenhum carregador de módulo.

Produzindo externo módulos (conforme nomeado pela especificação) para require é feito colocando o export diretiva em uma declaração de nível superior em um arquivo .ts (consulte a seção de especificações 9.2.1).Existem algumas amostras (por ex.imageboard) disponíveis para download que fazem isso se você estiver interessado.

Outras dicas

Você deve ter seus módulos definidos como export module, não o seu module e então compile-o com --m amd ou --module amd.

Levei algumas horas para perceber :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top