我正在转换一些TypeScript代码,使用硬编码捕获"这":
var _this = this;
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then(function(data){
_this.querySucceeded(data);
});
使用lambdas:
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then((data) => {
this.querySucceeded(data);
});
TypeScript将JS编译成类似于第一个代码块的东西,一切都在浏览器中运行良好。问题是在Visual Studio中进行调试时。当我检查"这个"在lambda之后,它显示窗口属性,而不是类上下文。
如果我直接在浏览器中调试,它会显示本地上下文。这是一个已知的问题?也许JS文件和TS文件之间的映射存在问题?
我正在使用VS2013 Update 4和TypeScript 1.4。
答案 0 :(得分:2)
检查"这"在lambda之后,它显示窗口属性,而不是类上下文。
已知问题。这是因为名称没有映射。您需要检查" _this"