Question

Je suis assez nouveau pour Javascript, NodeJS et --bien sûr-- Tapuscrit.J'aimerais expérimenter avec le compilateur de services dans src/services (Windows) pour fournir de l'intellisense, etc.pour un éditeur.

Aussi loin que je peux dire, j'ai besoin d'être en mesure de require le Tapuscrit de code de services dans un serveur NodeJS et de communiquer avec celui de l'éditeur.Je ne pouvais pas trouver tout de NodeJS spécifiques Tapuscrit services code, donc je pense que j'aurais pour compiler le code de services avec --module amd pour le rendre disponible à NodeJS via RequireJS.

Si ce qui précède est correct, mes tentatives pour compiler le code de services avec --module amd rendement exactement les mêmes résultats qu'en utilisant le module par défaut type (voir ci-dessous).

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
Était-ce utile?

La solution

Ce n'est certes déroutant, mais le code languageService.ts n'est pas dans un "module" dans le sens d'AMD/RequireJS de la définition de "module".

La spécification se réfère à des choses à l'intérieur d'un module bloc comme "modules internes".Qu'est ce que vous voyez dans languageService.ts.Vous pouvez y penser plus comme des conteneurs ou des singletons qui exposent un haut niveau nom (en regardant le code gen pour un simple module interne clarifie un peu les choses).Vous consommez ces comme des objets de plus haut niveau, sans module de chargeur.

La production de externe les modules (tels que nommés par le spec) pour require est fait en mettant le export directive relative à un haut-niveau de la déclaration dans un .ts fichier (voir les spec de la section 9.2.1).Il y a quelques échantillons (p. ex.basé sur les images) disponibles pour le téléchargement que faire si vous êtes intéressé.

Autres conseils

Vous devez avoir vos modules définis comme export module, pas votre module et puis le compiler avec --m amd ou --module amd.

M'a fallu quelques heures pour s'en rendre compte :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top