我正在使用“this”的硬编码捕获转换一些 TypeScript 代码:
var _this = this;
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then(function(data){
_this.querySucceeded(data);
});
使用 lambda:
var querySucceeded = function(data){
this.doSomething(data);
}
var test = this.executeQuery().then((data) => {
this.querySucceeded(data);
});
TypeScript 将 JS 编译成类似于第一个代码块的东西,并且一切都在浏览器中运行良好。 问题在于在 Visual Studio 中进行调试时。 当我在 lambda 之后检查“this”时,它会显示窗口属性,而不是类上下文。
如果我直接在浏览器中调试,它会显示本地上下文。 这是一个已知的问题? 可能是JS文件和TS文件的映射有问题?
我正在使用 VS2013 Update 4 和 TypeScript 1.4。
问题是调试器不知道打字稿,它只知道 javascript 和源映射。 源映射文件仅列出从源(.ts)到目标(.js)的语句的映射,但不跟踪重命名的变量(例如_this)。
我们意识到了这个问题,而且这个问题已经存在很长时间了。 现在这个问题更加紧迫,因为我们正在使用 let、const、解构和计算属性更改进行更多这些重写。
当 2859 被修复时,这也应该在 IE 开发人员工具中“正常工作”,即,它将隐藏翻译。 但是,此时尚未在 Visual Studio 中完成布线。
这仍然是带有 es5 和箭头函数的 vs 代码的问题,这真的很烦人,应该以更高的优先级解决。
最有用的评论
这仍然是带有 es5 和箭头函数的 vs 代码的问题,这真的很烦人,应该以更高的优先级解决。