Typescript: 使用 lambda 时在 VS2013 中调试“this”的问题

创建于 2015-04-04  ·  3评论  ·  资料来源: microsoft/TypeScript

我正在使用“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。

Needs Proposal Suggestion Visual Studio

最有用的评论

这仍然是带有 es5 和箭头函数的 vs 代码的问题,这真的很烦人,应该以更高的优先级解决。

所有3条评论

问题是调试器不知道打字稿,它只知道 javascript 和源映射。 源映射文件仅列出从源(.ts)到目标(.js)的语句的映射,但不跟踪重命名的变量(例如_this)。

我们意识到了这个问题,而且这个问题已经存在很长时间了。 现在这个问题更加紧迫,因为我们正在使用 let、const、解构和计算属性更改进行更多这些重写。

当 2859 被修复时,这也应该在 IE 开发人员工具中“正常工作”,即,它将隐藏翻译。 但是,此时尚未在 Visual Studio 中完成布线。

这仍然是带有 es5 和箭头函数的 vs 代码的问题,这真的很烦人,应该以更高的优先级解决。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

OliverJAsh picture OliverJAsh  ·  242评论

tenry92 picture tenry92  ·  146评论

rwyborn picture rwyborn  ·  210评论

jonathandturner picture jonathandturner  ·  147评论

fdecampredon picture fdecampredon  ·  358评论