当使用lambdas时,在VS2013中调试“this”的Typescript问题

时间:2015-04-04 15:27:10

标签: visual-studio lambda typescript

我正在转换一些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。

1 个答案:

答案 0 :(得分:2)

  

检查"这"在lambda之后,它显示窗口属性,而不是类上下文。

已知问题。这是因为名称没有映射。您需要检查" _this"