2016-06-24 9 views
1

exportiert Ich habe versucht, ein Modul zu testen, die einfach eine Zahl exportiert, und eine Funktion, die diese Zahl erhöht:Wert wird anstelle der variablen

// counter.js 
export var number = 0; 
export function increment() { 
    number++; 
} 

ich dann dieses Modul wie folgt:

Ich benutze JSPM für das Modul laden, falls das wichtig ist. Wenn ich das laufen bekomme ich meine erwartete Ausgabe:

0 
1 

Allerdings, wenn ich einfach counter.js zu counter.ts ändern und haben Typoskript transpile diesem Modul meine Ausgabe endet als:

0 
0 

die transpiled counter.js wie folgt aussieht:

// counter.js 
"use strict"; 
exports.number = 0; 
function increment() { 
    exports.number++; 
} 
exports.increment = increment; 

auch hier meine tsconfig.json ist:

// tsconfig.json 
{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es5", 
     "noImplicitAny": false, 
     "sourceMap": false 
    } 
} 

Ist das ein Fehler, wie TypeScript dieses Modul transpiliert (und einen konstanten Wert für die Nummer exportiert, anstatt die Variable selbst) oder fehlt mir hier etwas?

Antwort

0

Aktualisierung meiner tsconfig.json mit folgenden gab mir meine erwartete Ausgabe:

{ 
    "compilerOptions": { 
     "module": "system" 
    } 
} 
0

Ich habe genau die gleichen transpiled Ausgang und tsconfig.json Einstellungen, aber ich bekomme die erwartete Ausgabe:

0 
1 

Der einzige Unterschied, den ich zu sehen bin, ist, dass Sie hier JSPM verwenden, während ich bin nicht; Ich führe Ihren Code nur mit Node.JS (v6.2.0, mit TypeScript 3.8.9).

Wenn es hilft, die tsconfig.json Dokumentation für gültige --module Optionen sagt amd, commonjs, system sind einige gültige Optionen.

Ich habe ein Git Repo des Arbeitscodes erstellt.

https://github.com/TWebster/counter

Ich bin Debuggen mit vscode, falls es darauf ankommt.

+0

Hmm. Ich habe gerade versucht, dies in Node auszuführen (auch index.js), aber ich habe die gleichen Ergebnisse erhalten. Könntest du mit diesem Test dein komplettes Projekt hochladen, damit ich es lokal ausprobieren kann? –

+0

@ChristopherOldfield https://github.com/Twebster/counter-note-index.js wird umbenannt in app.js –

+0

Vielen Dank für das Hochladen. Ich habe das in Node getestet und es hat für mich funktioniert. Ich vermute, dass es in meinem früheren Test nicht funktioniert hat, weil ich nicht die Typdefinitionen für Knoten in meinem Projekt hatte. In guten Nachrichten, aber ich fand, dass das Ändern des Moduls von commonjs zu System in tsconfig.json dieses Problem behoben! Ich bin mir nicht sicher, warum es die Arbeit früher verhindert hat, aber zumindest habe ich jetzt meine Lösung. Danke nochmal für deine Hilfe! –

Verwandte Themen