转到 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 定义

强制 Xcode 跳转到实现而不是使用跳转到定义的接口

Visual Studio C++ 项目转到定义打开对象浏览器而不是转到源代码

在 Visual Studio 代码中,如何跳转到 typescript 类型定义 index.d.ts 中的实际代码?

有没有一种快速的方法来查看(而不是跳转到)Xcode 中符号的定义/类型?

Typescript visual Studio项目属性