ウェブサイト検索

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」を確認する必要があります