Typescript: Problema com a depuração “this” no VS2013 ao usar lambdas

Criado em 4 abr. 2015  ·  3Comentários  ·  Fonte: microsoft/TypeScript

Estou convertendo algum código TypeScript usando uma captura codificada de "this":

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

para usar lambdas:

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

O TypeScript compila o JS em algo parecido com o primeiro bloco de código e tudo funciona bem no navegador. O problema é ao depurar no Visual Studio. Quando inspeciono "this" após o lambda, ele mostra as propriedades da janela, em vez do contexto da classe.

Se eu depurar diretamente no navegador, ele mostra o contexto local como deveria. Isto é um problema conhecido? Talvez haja um problema com os mapeamentos entre o arquivo JS e o arquivo TS?

Estou usando o VS2013 Update 4 e o TypeScript 1.4.

Needs Proposal Suggestion Visual Studio

Comentários muito úteis

Ainda é um problema com o código vs com es5 e função de seta, é realmente irritante deve ser resolvido com uma prioridade mais alta.

Todos 3 comentários

O problema é que o depurador não conhece typescript, tudo o que sabe é javascript e um mapa de origem. o arquivo de mapa de origem apenas lista os mapeamentos para instruções de source(.ts) para target (.js), mas não rastreia variáveis ​​renomeadas (por exemplo, _this).

Estamos cientes desse problema, e ele vem de longa data. a questão é mais urgente agora, pois estamos fazendo mais dessas reescritas com alterações de propriedades let, const, desestruturação e computadas.

Quando 2859 for corrigido, isso também deve "simplesmente funcionar" nas ferramentas de desenvolvedor do IE, ou seja, ocultará a tradução. No entanto, a fiação não foi feita no Visual Studio neste momento.

Ainda é um problema com o código vs com es5 e função de seta, é realmente irritante deve ser resolvido com uma prioridade mais alta.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jbondc picture jbondc  ·  3Comentários

bgrieder picture bgrieder  ·  3Comentários

blendsdk picture blendsdk  ·  3Comentários

Roam-Cooper picture Roam-Cooper  ·  3Comentários

wmaurer picture wmaurer  ·  3Comentários