javascript - 转到 Typescript 源定义而不是 Visual Studio Code 中的编译定义
问题描述
我正在使用 Visual Studio Code 开发一个打字稿项目,其中包括多个结构如下的 npm 包:
- 源代码:
/src/index.ts
- 编译代码:
/dist/...
当我右键单击导入的对象并选择“转到定义”或单击F12
或单击对象并按住 时CTRL
,Visual Studio Code 将打开相应的.d.ts
文件/dist
但是,我希望 VSCode.ts
在/src
是否可以更改此行为,因为手动搜索源文件确实很烦人。
我已经创建了 git repo,所以你可以自己尝试一下: https ://github.com/flolude/stackoverflow-typescript-go-to-definition
- 您只需要运行
yarn bootstrap
即可复制问题。
解决方案
TypeScript 2.9 引入了一个名为declarationMap的编译器选项。根据发行说明:
在 --declaration 旁边启用 --declarationMap 会导致编译器在输出 .d.ts 文件旁边发出 .d.ts.map 文件。语言服务现在还可以理解这些映射文件,并使用它们将基于声明文件的定义位置映射到其原始源(如果可用)。
换句话说,对使用 --declarationMap 生成的 .d.ts 文件中的声明点击 go-to-definition 会将您带到定义该声明的源文件 (.ts) 位置,而不是 .d。 ts。
我在您的示例 repo 上提交了 PR以启用此设置。
推荐阅读
- google-apps-script - getActiveSpreadsheet() 总是返回 null
- python - Python 3 - 删除网络抓取的不必要结果
- amazon-ec2 - Ansible 对循环中的项目执行 when 语句
- matlab - 多级数据存储
- spring-boot - 使用 Spring Boot 持续运行 Spring Batch 作业
- http - 我可以制作 Javalite Http 解压缩 gzip 的回复吗?
- ddos - 您可以仅通过请求静态资产来对服务器进行 ddos 吗?
- r - 将函数应用于 R 中因子的不同级别
- javascript - 我无法让我的按钮在我的页面上居中
- java - putStringSet() 共享首选项