'this'的TypeScript映射在Chrome调试器中不起作用

时间:2015-08-07 07:38:47

标签: javascript google-chrome debugging typescript

我正在使用VS 2015和Chrome来开发我的网络应用程序。我的客户端JavaScript代码是用TypeScript编写的。编译.ts文件时,VS也会生成相应的.map文件。 (在项目中,我始终将我的.ts和.map文件标记为内容,以便在客户请求任何内容时提供。当然我要改变这种做法在发布中。)

在Chrome开发工具(F12)中调试客户端代码时,Chrome会自动检测/接受特定.js文件的.ts和.map文件。这是所以集成,所以我无法在我的.js中设置断点,因为当我尝试它时,Chrome会自动切换到相应的.ts并将断点设置为相应的那里。

到目前为止这很好,那么问题是什么呢?好吧,当在.ts文件中调试时,TypeScript类中的所有成员变量都显示为undefined。 (它们不是)这些变量是根据TypeScript语法(如this.myMember)访问的,所以我认为Chrome(或.map文件)错误解释了TypeScript的this技巧。 (这不是JavaScript this,我们会在纯JavaScript中将其称为_thisthatself。因此Chrome使用此this作为真实JavaScript调用上下文而不是实例的this,这个上下文显然没有像我的TypeScript对象那样的成员。

要整理它,我不知道这是Chrome中的问题,还是VS生成的.map文件中的问题,但在很多情况下肯定会禁用调试。 (注意,当.map和.ts文件可用时,我无法调试原始的.js。)

当然有一种解决方法可以禁用服务(和生成).ts和.map文件,并调试生成的.js,但这对于在服务器端和客户端都有映射基础结构,然后完全有点令人沮丧忽略它并调试机器生成的.js代码。

enter image description here

0 个答案:

没有答案