1
我已經在對象中定義這樣的功能:缺少_this定義
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);
}
}
}));
}
打字稿編譯器採用的是,併產生這樣的:
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);
}
}
}));
};
注意這條線在js:
_this.errorChecker(data, function (data)
編譯器已正確注意到我使用=>運算符並得出結論認爲this
在我原來的TypeScript中應該引用父對象,而不是this
碰巧是實際調用成功回調時。但是,由於某種原因,編譯器已經忘記包含魔術線了:
var _this = this;
在函數的開始處。這是一個錯誤?或者這是由設計?如果它完全忽略了這個/這個東西,我只是說我做錯了,但它在這裏的一半,這讓我覺得有什麼不對。
更新:奇怪這似乎是在Visual Studio中的編譯器的問題,如果我將相同的代碼複製到playground它按預期工作。
是的,我也這麼認爲,但我總是喜歡確保我不會錯過首先明顯的東西。我提交了一個bug [這裏](http://typescript.codeplex.com/workitem/181)。 –