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

时间:2018-02-09 17:23:22

标签: node.js typescript npm visual-studio-code

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

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

"sourceMap": true
"outDir": "dist"

package.json文件包含:

"main": "dist/src/index.js",
"typings": "dist/src",
"files": [
  "src",
  "dist"
],

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

- package.json
- /dist (`.js` and `d.ts` files)
- /src (`.ts` files)

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

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

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

3 个答案:

答案 0 :(得分:6)

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

./node_modules/typescript/bin/tsc -p . --declarationMap

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

//# sourceMappingURL=ActionApi.d.ts.map

当VSCodes遇到这样的clarificationMap时,它知道要去的地方,并直接带您到源代码。

答案 1 :(得分:2)

当您进行调试时,实际上你会落入具有源地图的实际js。所以,你觉得你喜欢打字稿来源。

但TypeScript和VSCode对库的来源一无所知。当TypeScript查找导入的库时,它会搜索package.json,然后查找字段“typings”,并使用那里指定的文件。

有理由,为什么库为TypeScript提供d.ts和.js,而不是源本身。如果库提供源,那么您将需要编译它们。这很奇怪而且效率不高,因为:

  1. 图书馆的每个用户都会烧掉他的处理器来编译他所依赖的所有图书馆。
  2. 用户将在编译期间更改node_modules的内容
  3. 用户将获得a problem like this
  4. 这就是为什么所有的库已经编译成js,带有.d.ts声明。

    如果你真的想看到图书馆资源(顺便说一句,为了什么?),那么只需将图书馆资源复制到你的src目录,然后将其从家属中删除。

答案 2 :(得分:2)

在配置中设置Application.Dialogs(xlDialogSaveAs).Show Range("A10") & Range("B3") & Range("B4")