转到TypeScript源文件而不是VS Code中的类型定义文件

ele*_*ype 18 node.js npm typescript visual-studio-code

我创建了一个npm在一些根项目中使用的自定义库.该库是用TypeScript编写的.所有来源都在一个/src文件夹下.

tsconfig.json库包含那些编译器选项:

"sourceMap": true
"outDir": "dist"
Run Code Online (Sandbox Code Playgroud)

package.json文件包含:

"main": "dist/src/index.js",
"typings": "dist/src",
"files": [
  "src",
  "dist"
],
Run Code Online (Sandbox Code Playgroud)

最后,生成的包包含生成的.js文件,d.ts文件和.ts源文件:

- package.json
- /dist (`.js` and `d.ts` files)
- /src (`.ts` files)
Run Code Online (Sandbox Code Playgroud)

在已安装此自定义库的根项目中,我可以在调用从库导入的函数的行上添加断点,然后单步调试它以调试其代码,所有这些都在TypeScript中.这很棒!

但是,在Visual Studio代码中,当我按CTRL-单击从库导入的函数而不进行调试时,它会将我引导d.ts类型定义文件.我会prefere它带领.ts源文件!目前的方式,如果我需要查看实际的源代码,我必须自己浏览/src库的文件夹/node_modules.

有没有办法直接在VSCode中转到TypeScript源文件,而不是类型定义文件?

c_f*_*ich 15

从Typescript 2.9开始,可以用declarationMap标志编译你的库

./node_modules/typescript/bin/tsc -p . --declarationMap
Run Code Online (Sandbox Code Playgroud)

这样做会创建一个声明映射文件(dist/ActionApi.d.ts.map)和指向相应d.ts文件底部的地图的链接

//# sourceMappingURL=ActionApi.d.ts.map
Run Code Online (Sandbox Code Playgroud)

当VSCodes遇到这样的declarationMap时,它知道去哪里并直接引导你到源代码.

  • 精彩的!!我们将 `"declarationMap": true` 添加到 `tsconfig.json` 中,它确实有效......谢谢! (2认同)

Ale*_*nov 8

从 TypeScript 4.7 开始,有一个Go to Source Definition命令可以执行此操作。VS Code 1.68(2022 年 5 月)包含它

如果您有早期的 VS Code 版本,您仍然可以通过安装JavaScript 和 TypeScript Nightly并遵循其文档来启用它:

为了确保您正在使用typescript@next

  1. 在 VS Code 中打开 JavaScript 或 TypeScript 文件。
  2. 在 VS Code 命令面板中,运行TypeScript: Select TypeScript version command.
  3. 确保您已Use VS Code's version选择


and*_*slv 5

disableAutomaticTypeAcquisition: true在配置中设置。