2016-04-08 7 views
2

潜在的に気になる質問には申し訳ありません。javascriptでtypescriptクラスをインスタンス化できません

問題:

私はそうとtypescriptですで定義されたクラスを持っている:

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

次のようにそれではJavaScriptにコンパイルされます:

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

それはから参照されていますjspページ - 次も行います:

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

今、私はそれをデバッグしたのだが、(コンパイル済みの.jsの)ラインにヒットして、行番号と同じファイルので終了します。

質問:

は、なぜそれが機能して終了に行きませんか?それを間違ってインスタンス化していますか?

+0

がある理由について任意のコメントダウン投票? – Sasha

答えて

0

別のファイルをロードしているscriptタグにコンテキストを挿入することはできません。

代わりにこれを試してみてください:

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

提案がありますか? – Sasha

+0

更新情報を見る... JavaScriptを使用する方法についても学んでください:-) – Neal

+0

今すぐ学習してください。ありがとう – Sasha

2

問題は、あなたが(7行目でmodule.exports = MyClassで示される)commonjs形式に活字体を輸出していることです。
TypeScriptをUMD形式にコンパイルする必要があります。これはブラウザで受け付けることができます。
TypeScriptソースからexport = MyClass;を削除するだけです。


作業TSコード:

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

はにコンパイルされます。

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

次に、ページ上でそれを使用します。

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

こんにちは、あなたの入力のおかげで、上記は食べ物には合いません。私が問題を示すためにクラスを単純化したように、私が苦労しているクラスは、あまりにも頻繁に使用され、出発点として機能するため、エクスポートが必要で、umdソリューションを試します。 – Sasha

+0

@Sasha '--module umd'でエクスポートしよう –

+0

両方を試しても動作しませんでした... – Sasha

関連する問題