Tengo una función definida en un objeto como éste:
connect(callback?: (connected: bool) => void) {
$.ajax(this.url + /connect, $.extend(true, {}, this.ajaxSettings, {
success: (data) => {
this.errorChecker(data, (data) => {
if (callback != null) {
callback(data);
}
});
},
timeout: this.timeout,
error: () => {
if (callback != null) {
callback(false);
}
}
}));
}
El compilador mecanografiado detiene y produce esto:
VAS.prototype.connect = function (callback) {
$.ajax(this.url + /connect, $.extend(true, {
}, this.ajaxSettings, {
success: function (data) {
_this.errorChecker(data, function (data) {
if(callback != null) {
callback(data);
}
});
},
timeout: this.timeout,
error: function () {
if(callback != null) {
callback(false);
}
}
}));
};
Tenga en cuenta esta línea en el js:
_this.errorChecker(data, function (data)
El compilador ha notado correctamente mi uso del operador => y concluyó que thisen mi mecanografiado original debe referirse al objeto padre y no lo thispasa a ser cuando la devolución de llamada de éxito se llama en realidad. Pero, por alguna razón, el compilador ha olvidado incluir la línea mágica:
var _this = this;
Al comienzo de la función. Es esto un error? O se trata por diseño? Si sólo ignoró las _Es / esto por completo, sólo diría que estoy haciendo mal, pero va a mitad de camino aquí que me hace pensar que algo está mal.
Actualización : por extraño que esto parece ser un problema con el compilador en Visual Studio, si copio el mismo código en el parque funciona como se esperaba.













