Typescript: Problème avec le débogage de "this" dans VS2013 lors de l'utilisation de lambdas

Créé le 4 avr. 2015  ·  3Commentaires  ·  Source: microsoft/TypeScript

Je convertis du code TypeScript en utilisant une capture codée en dur de "this":

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

à l'utilisation de lambdas :

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

TypeScript compile le JS en quelque chose qui ressemble au premier bloc de code et tout fonctionne bien dans le navigateur. Le problème est lors du débogage dans Visual Studio. Lorsque j'inspecte "this" après le lambda, il affiche les propriétés de la fenêtre au lieu du contexte de la classe.

Si je débogue directement dans le navigateur, il affiche le contexte local comme il se doit. est-ce un problème connu? Peut-être y a-t-il un problème avec les mappages entre le fichier JS et le fichier TS ?

J'utilise VS2013 Update 4 et TypeScript 1.4.

Needs Proposal Suggestion Visual Studio

Commentaire le plus utile

C'est toujours un problème avec vs code avec es5 et la fonction flèche, c'est vraiment ennuyeux qui devrait être traité avec une priorité plus élevée.

Tous les 3 commentaires

Le problème est que le débogueur ne connaît pas le tapuscrit, tout ce qu'il sait, c'est le javascript et une carte source. le fichier de mappage source répertorie simplement les mappages pour les instructions de la source (.ts) à la cible (.js), mais ne suit pas les variables renommées (par exemple _this).

Nous sommes conscients de ce problème, et il existe depuis longtemps. le problème est plus pressant maintenant car nous effectuons davantage de ces réécritures avec des changements de propriétés let, const, déstructuration et calculées.

Lorsque 2859 est corrigé, cela devrait également "fonctionner" dans les outils de développement IE, c'est-à-dire qu'il masquera la traduction. Cependant, le câblage n'a pas été fait dans Visual Studio pour le moment.

C'est toujours un problème avec vs code avec es5 et la fonction flèche, c'est vraiment ennuyeux qui devrait être traité avec une priorité plus élevée.

Cette page vous a été utile?
0 / 5 - 0 notes