Frage

Ich bin ziemlich neu in Javascript, NodeJS und – natürlich – TypeScript.Ich würde gerne mit den Compiler-Diensten experimentieren src/services (Windows) zur Bereitstellung von Intellisense usw.für einen Redakteur.

Soweit ich das beurteilen kann, muss ich dazu in der Lage sein require den Code der TypeScript-Dienste in einem NodeJS-Server und kommunizieren mit diesem vom Editor aus.Ich konnte keinen NodeJS-spezifischen TypeScript-Dienstcode finden, daher denke ich, dass ich den Dienstcode mit kompilieren müsste --module amd um es NodeJS über RequireJS zur Verfügung zu stellen.

Wenn das oben Gesagte korrekt ist, versuche ich, den Dienstcode mit zu kompilieren --module amd liefern genau die gleichen Ergebnisse wie die Verwendung des Standardmodultyps (siehe unten).

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
War es hilfreich?

Lösung

Das ist zwar verwirrend, aber der Code in languageService.ts befindet sich nicht in einem „Modul“ im Sinne der AMD/RequireJS-Definition von „Modul“.

Die Spezifikation bezieht sich auf Dinge innerhalb von a module Block als „interne Module“.Das sehen Sie in languageService.ts.Sie können sie sich eher wie Container oder Singletons vorstellen, die einen Namen der obersten Ebene offenlegen (ein Blick auf die Code-Generation für ein einfaches internes Modul verdeutlicht dies ziemlich deutlich).Sie konsumieren diese wie normale Objekte der obersten Ebene ohne jeglichen Modullader.

Produzieren extern Module (wie in der Spezifikation benannt) für require erfolgt durch Setzen der export Direktive für eine Deklaration der obersten Ebene in einer .ts-Datei (siehe Spezifikationsabschnitt 9.2.1).Es gibt einige Beispiele (z.B.Imageboard) zum Download zur Verfügung, die dies tun, wenn Sie interessiert sind.

Andere Tipps

Sie müssen Ihre Module als definiert haben export module, nicht dein module und kompilieren Sie es dann mit --m amd oder --module amd.

Es hat ein paar Stunden gedauert, bis ich es realisiert habe :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top