Typescript: Masalah dengan debugging "ini" di VS2013 saat menggunakan lambdas

Dibuat pada 4 Apr 2015  ·  3Komentar  ·  Sumber: microsoft/TypeScript

Saya mengonversi beberapa kode TypeScript dari menggunakan tangkapan kode keras "ini":

var _this = this;
var querySucceeded = function(data){
    this.doSomething(data);
}
var test = this.executeQuery().then(function(data){
    _this.querySucceeded(data);
});

untuk menggunakan lambda:

var querySucceeded = function(data){
    this.doSomething(data);
}
var test = this.executeQuery().then((data) => {
    this.querySucceeded(data);
});

TypeScript mengkompilasi JS menjadi sesuatu yang menyerupai blok kode pertama dan semuanya berjalan dengan baik di browser. Masalahnya adalah ketika debugging di Visual Studio. Ketika saya memeriksa "ini" setelah lambda, itu menunjukkan properti jendela, bukan konteks kelas.

Jika saya men-debug langsung di browser, itu menunjukkan konteks lokal sebagaimana mestinya. Apakah ini masalah yang diketahui? Mungkin ada masalah dengan pemetaan antara file JS dan file TS?

Saya menggunakan Pembaruan VS2013 4 dan TypeScript 1.4.

Needs Proposal Suggestion Visual Studio

Komentar yang paling membantu

Ini masih masalah dengan kode vs dengan es5 dan fungsi panah, itu benar-benar menjengkelkan harus ditangani dengan prioritas yang lebih tinggi.

Semua 3 komentar

Masalahnya adalah debugger tidak tahu tentang TypeScript, yang dia tahu hanyalah javascript dan peta sumber. file peta sumber hanya mencantumkan pemetaan untuk pernyataan dari source(.ts) ke target (.js), tetapi tidak melacak variabel yang diubah namanya (misalnya _this).

Kami menyadari masalah ini, dan ini sudah lama terjadi. masalahnya lebih mendesak sekarang karena kami melakukan lebih banyak penulisan ulang ini dengan perubahan properti let, const, destructuring, dan computed.

Ketika 2859 diperbaiki, ini juga harus "berfungsi" di alat pengembang IE, yaitu, itu akan menyembunyikan terjemahan. Namun pengkabelan belum dilakukan di Visual Studio saat ini.

Ini masih masalah dengan kode vs dengan es5 dan fungsi panah, itu benar-benar menjengkelkan harus ditangani dengan prioritas yang lebih tinggi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat