有没有办法在Visual Studio中调试TypeScript源代码(而不是调试生成的javascript)?

根据TypeScript语言规范:

TypeScript可选地提供源代码映射,从而启用源代码级调试.

因此,我希望能够在ts代码中放置断点并对其进行调试,但它不起作用.我在规范中没有发现任何其他提到调试的内容.我应该做些什么来让这一切顺利吗?也许"可选"这个词暗示我需要做点什么才能让它工作...有什么建议吗?

推荐答案

Current Answer for VS2017 and later

自VS2017年以来,直接在Visual Studio中调试Typescript已成为可能.从documentation人中:

可以使用Visual Studio调试JavaScript和TypeScript代码.您可以设置并点击断点,附加调试器,判断变量,查看调用堆栈,以及使用其他调试功能.

Debugging Typescript / Asp.NET Core in Visual Studio上还有额外的资源.

也可以在Visual Studio Code中调试typescript:

Visual Studio代码通过其内置 node 支持TypeScript调试.js调试器,还可以通过Chrome调试器等扩展来支持客户端TypeScript调试.

Original Answer for prior versions of VS:

您可能无法在VS中调试,但可以在某些浏览器中调试.亚伦·鲍威尔(Aaron Powell)在博客中写道,就在今天,Chrome Canary中的断点可以工作:https://www.aaron-powell.com/posts/2012-10-03-typescript-source-maps/个.

为了(非常简短地)总结Aaron所说的,您可以使用编译器上的-sourcemapswitch 在与源代码相同的目录中生成一个*.js.map文件.在支持source maps的浏览器中(Chrome Canary,可能是最新的Firefox版本,因为它们是Mozilla的 idea ),你可以像调试普通的.js文件一样调试.ts源代码.

该博客以"希望Visual Studio或IE(或两者)团队也能获取源 map 并为其添加支持"结尾这表明它还没有发生.

Update:

随着TypeScript 0.8.1的发布,源映射调试现在也可以在Visual Studio中使用:

https://blogs.msdn.com/b/typescript/archive/2012/11/15/announcing-typescript-0-8-1.aspx

从公告中:

Debugging

Update:

WebStorm还增加了对通过SourceMaps:http://blog.jetbrains.com/webide/2013/03/webstorm-6-0-released-adds-typescript-debugging-with-source-maps-fresh-ui-and-much-more/进行调试的支持

首先,WebStorm允许更智能、更精简的web服务

这些高级语言的自动编译/翻译

Typescript相关问答推荐

已定义但从未使用通用推断的错误

用泛型类型覆盖父类函数导致类型y中的Property x不能赋给基类型Parent中的相同属性."'''''' "

在Angular中注入多个BrowserModules,但在我的代码中只有一个

Redux—Toolkit查询仅在不为空的情况下添加参数

如何设置绝对路径和相对路径的类型?

react 路由6操作未订阅从react 挂钩表单提交+也不使用RTK查询Mutations

类型脚本`Return;`vs`Return unfined;`

如何以Angular 形式显示验证错误消息

带switch 的函数的返回类型的类型缩小

匿名静态类推断组成不正确推断

从子类集合实例化类,同时保持对Typescript中静态成员的访问

在VSCode中显示eslint错误,但在终端中运行eslint命令时不显示?(Vite,React,TypeScript)

如何从输入中删除值0

React router 6(数据路由)使用数据重定向

我在Angular 17中的environment.ts文件中得到了一个属性端点错误

自定义 Select 组件的类型问题:使用带逗号的泛型类型<;T与不带逗号的<;T&>;时出错

在打字脚本中对可迭代对象进行可变压缩

将接口映射到交叉口类型

如何解决&Quot;类型不可分配给TypeScrip IF语句中的类型&Quot;?

两个名称不同的相同打字界面-如何使其干燥/避免重复?