Ich habe eine Funktion in einem Objekt definiert wie folgt aus:
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);
}
}
}));
}
Der Typoskript Compiler nimmt das und produziert diese:
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);
}
}
}));
};
Beachten Sie die folgende Zeile in dem js:
_this.errorChecker(data, function (data)
Der Compiler hat bemerkt richtig meine Verwendung des Operators => und festgestellt , dass thisin meiner ursprüngliche Typoskript auf das übergeordnete Objekt beziehen sollte und nicht was auch immer , thiswenn der Erfolg Rückruf tatsächlich passiert sein heißt. Aber aus irgendeinem Grund hat der Compiler die magische Linie schließen vergessen:
var _this = this;
Zu Beginn der Funktion. Ist das ein Fehler? Oder ist dies durch Design? Wenn es nur die _this ignoriert / dieses Ding überhaupt, würde ich nur sagen, dass ich falsch mache es, aber es wird auf halbem Weg hier, die ich denke, macht etwas falsch ist.
Update : seltsam das scheint ein Problem mit dem Compiler in Visual Studio zu sein, wenn ich den gleichen Code in dem kopiere Spielplatz es wie erwartet funktioniert.













