tsc --module génère toujours la même sortie, peu importe l'argument
-
12-12-2019 - |
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
$
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 :)