转到 Typescript 源定义而不是 Visual Studio Code 中的编译定义
Posted
技术标签:
【中文标题】转到 Typescript 源定义而不是 Visual Studio Code 中的编译定义【英文标题】:Go to Typescript Source Definition instead of Compiled Definition in Visual Studio Code 【发布时间】:2020-01-01 23:40:20 【问题描述】:我正在使用 Visual Studio Code 开发一个打字稿项目,其中包括多个结构如下的 npm 包:
源代码:/src/index.ts
编译代码:/dist/...
当我右键单击导入的对象并选择“转到定义”或单击F12
或按住CTRL
单击对象时,Visual Studio Code 在/dist
中打开相应的.d.ts
文件
但是,我想让VSCode在/src
中打开对应的.ts
文件
是否可以改变这种行为,因为手动搜索源文件真的很烦人。
我已经创建了 git repo,所以你可以自己尝试一下: https://github.com/flolude/***-typescript-go-to-definition
您只需要运行yarn bootstrap
即可重现问题。
【问题讨论】:
【参考方案1】:TypeScript 2.9 引入了一个名为 declarationMap 的编译器选项。根据发行说明:
在 --declaration 旁边启用 --declarationMap 会导致编译器 在输出 .d.ts 文件旁边发出 .d.ts.map 文件。语言 服务现在也可以理解这些映射文件,并使用它们来映射 基于声明文件的定义位置到其原始来源, 可用时。
换句话说,在来自 .d.ts 的声明上点击 go-to-definition 使用 --declarationMap 生成的文件会将您带到源文件 (.ts) 定义该声明的位置,而不是 .d.ts.
我在您的示例存储库中submitted a PR 以启用此设置。
【讨论】:
以上是关于转到 Typescript 源定义而不是 Visual Studio Code 中的编译定义的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 libman 而不是 npm 下载 typescript 定义
Visual Studio C++ 项目转到定义打开对象浏览器而不是转到源代码
在 Visual Studio 代码中,如何跳转到 typescript 类型定义 index.d.ts 中的实际代码?