Typescript: Problema con la depuración de "esto" en VS2013 al usar lambdas

Creado en 4 abr. 2015  ·  3Comentarios  ·  Fuente: microsoft/TypeScript

Estoy convirtiendo un código TypeScript usando una captura codificada de "esto":

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

al uso de lambdas:

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

TypeScript compila el JS en algo parecido al primer bloque de código y todo funciona bien en el navegador. El problema es cuando se depura en Visual Studio. Cuando inspecciono "esto" después de la lambda, muestra las propiedades de la ventana, en lugar del contexto de la clase.

Si depuro directamente en el navegador, muestra el contexto local como debería. ¿Es este un problema conocido? ¿Quizás hay un problema con las asignaciones entre el archivo JS y el archivo TS?

Estoy usando VS2013 Update 4 y TypeScript 1.4.

Needs Proposal Suggestion Visual Studio

Comentario más útil

Todavía es un problema con el código vs con es5 y la función de flecha, es realmente molesto y debe abordarse con una prioridad más alta.

Todos 3 comentarios

El problema es que el depurador no conoce TypeScript, todo lo que sabe es JavaScript y un mapa fuente. el archivo de mapa de origen solo enumera las asignaciones para declaraciones de origen (.ts) a destino (.js), pero no realiza un seguimiento de las variables renombradas (p. ej., _this).

Somos conscientes de este problema, y ​​ha sido uno de larga data. el problema es más apremiante ahora que estamos haciendo más de estas reescrituras con let, const, desestructuración y cambios en las propiedades calculadas.

Cuando se corrige 2859, esto también debería "simplemente funcionar" en las herramientas de desarrollo de IE, es decir, ocultará la traducción. Sin embargo, el cableado no se ha realizado en Visual Studio en este momento.

Todavía es un problema con el código vs con es5 y la función de flecha, es realmente molesto y debe abordarse con una prioridad más alta.

¿Fue útil esta página
0 / 5 - 0 calificaciones