Visual Studio - VS2013でラムダを使用したときのTypescriptのデバッグでの「this」の問題
私は、ハードコーディングされた「this」のキャプチャを使用しているいくつかのTypeScriptコードを変換しています:
var _this = this;
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then(function(data){
_this.querySucceeded(data);
});
ラムダを使用することに:
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then((data) => {
this.querySucceeded(data);
});
TypeScriptはJSを最初のコードブロックに似たものにコンパイルし、ブラウザではすべて正常に動作します。問題はVisual Studioでデバッグするときに発生します。ラムダの後で"this"を確認すると、クラスコンテキストの代わりにwindowのプロパティが表示されます。
もしブラウザで直接デバッグすると、ローカルコンテキストは正常に表示されます。これは既知の問題ですか?JSファイルとTSファイルの間のマッピングに問題があるのでしょうか?
私は VS2013 Update 4 と TypeScript 1.4 を使用しています。
回答 #1
ラムダの後で「これ」を確認すると、クラスのコンテキストではなく、ウィンドウのプロパティが表示されます。
既知の問題です。名前がマッピングされていないためです。「_this」を確認する必要があります