Typescript: Problem beim Debuggen von „this“ in VS2013 bei Verwendung von Lambdas

Erstellt am 4. Apr. 2015  ·  3Kommentare  ·  Quelle: microsoft/TypeScript

Ich konvertiere einen TypeScript-Code von der Verwendung einer fest codierten Erfassung von "this":

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

zur Verwendung von Lambdas:

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

TypeScript kompiliert das JS in etwas, das dem ersten Codeblock ähnelt, und im Browser läuft alles einwandfrei. Das Problem tritt beim Debuggen in Visual Studio auf. Wenn ich „this“ nach dem Lambda inspiziere, werden die Fenstereigenschaften anstelle des Klassenkontexts angezeigt.

Wenn ich direkt im Browser debugge, zeigt er den lokalen Kontext so an, wie er sollte. Ist das ein bekanntes Problem? Vielleicht gibt es ein Problem mit den Zuordnungen zwischen der JS-Datei und der TS-Datei?

Ich verwende VS2013 Update 4 und TypeScript 1.4.

Needs Proposal Suggestion Visual Studio

Hilfreichster Kommentar

Es ist immer noch ein Problem mit vs-Code mit es5 und Pfeilfunktion, es ist wirklich ärgerlich und sollte mit höherer Priorität angegangen werden.

Alle 3 Kommentare

Das Problem ist, dass der Debugger nichts über Typoskript weiß, er kennt nur Javascript und eine Quellzuordnung. Die Quellzuordnungsdatei listet nur die Zuordnungen für Anweisungen von Quelle (.ts) zu Ziel (.js) auf, verfolgt jedoch keine umbenannten Variablen (z. B. _this).

Wir sind uns dieses Problems bewusst, und es besteht seit langem. Das Problem ist jetzt dringender, da wir mehr dieser Umschreibungen mit Änderungen von let, const, Destrukturierung und berechneten Eigenschaften durchführen.

Wenn 2859 behoben ist, sollte dies auch in den IE-Entwicklertools "einfach funktionieren", dh die Übersetzung wird ausgeblendet. Die Verkabelung wurde jedoch zu diesem Zeitpunkt noch nicht in Visual Studio durchgeführt.

Es ist immer noch ein Problem mit vs-Code mit es5 und Pfeilfunktion, es ist wirklich ärgerlich und sollte mit höherer Priorität angegangen werden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen