2016-04-08 4 views
2

zu instantiieren Es tut mir leid für die potentiell verdammte Frage.Nicht in der Lage, Typoskript-Klasse in Javascript

Problem:

ich die Klasse in Typoskript als so definiert haben:

1 class MyClass { 
2  constructor() { 
3   alert("MyClass instantiated!"); 
4  } 
5 } 
6 export = MyClass; 

Es in Javascript kompiliert wie folgt:

1 var MyClass = (function() { 
2  function MyClass() { 
3   var _this = this; 
4   alert("MyClass instantiated!"); 
5  } 
6 } 
7 module.exports = MyClass 

Aus der verwiesen wird JSP-Seite - die auch Folgendes tut:

<script language='javascript' src="myclass.js"> 
    var myclass = new MyClass(); 
</script> 

Jetzt habe ich es ausgetestet und es trifft die Linie (kompilierter Js) und tritt dann an die Zeilennummer der gleichen Datei.

Frage:

Warum ist es nicht in der Funktion und Ausgänge gehen? Präge ich es falsch ein?

+0

Alle Kommentare, warum sind

class MyClass { constructor() { alert("MyClass instantiated!"); } } 

wird zu erstellenden Stimmen runter? – Sasha

Antwort

0

Sie können keinen Kontext in ein script-Tag einfügen, das eine andere Datei lädt.

Versuchen Sie stattdessen:

<script src="myclass.js"></script> 
<script> 
    var myclass = new MyClass(); 
</script> 
+0

Irgendwelche Vorschläge? – Sasha

+0

Sehen Sie meine Updates ... Lernen Sie auch, wie man JavaScript benutzt :-) – Neal

+0

Jetzt lernen. Danke – Sasha

2

Das Problem ist, dass Sie das Typoskript in ein commonjs Format (durch die module.exports = MyClass in Zeile 7) exportiert.
Sie müssen das TypeScript in ein UMD Format kompilieren, das vom Browser akzeptiert werden kann.
Oder einfach export = MyClass; aus TypeScript-Quelle entfernen.


Der Arbeits TS Code:

var MyClass = (function() { 
    function MyClass() { 
     var _this = this; 
     alert("MyClass instantiated!"); 
    } 
} 

Dann ist es auf der Webseite:: Es

<script type="text/javascript" src="myclass.js"></script> 
<script> 
    var myclass = new MyClass(); 
</script> 
+0

Hallo, vielen Dank für Ihre Eingabe, aber das obige passt nicht zum Esser. Da ich die Klasse vereinfacht habe, um auf das Problem hinzuweisen, wird die Klasse, mit der ich kämpfe, überall stark verwendet und dient als Ausgangspunkt, daher benötigt sie den Export, wird die umd-Lösung versuchen. – Sasha

+0

@Sasha Versuchen Sie mit '--module umd' zu exportieren –

+0

Versuchte beide, hat nicht funktioniert ... – Sasha