Florian Ludewig
Florian Ludewig

Reputation: 6002

Go to Typescript Source Definition instead of Compiled Definition in Visual Studio Code

I am working on a typescript project with Visual Studio Code including multiple npm packages structured like this:

When I right click on imported objects and choose "Go to Definition" or click F12 or by clicking on the object with holding down CTRL, Visual Studio Code opens the corresponding .d.ts file in /dist

vscode go to definition vscode open .d.ts

However, I want VSCode to open the corresponding .ts file in /src

.ts file

Is it possible to change this behavior, as it is really annoying to manually search for the source file.

I've created git repo, so that you can try it yourself: https://github.com/flolude/stackoverflow-typescript-go-to-definition

Upvotes: 14

Views: 3755

Answers (2)

Benny
Benny

Reputation: 855

The newer VSCode version (April 2022 or later) supports this with a feature called "Go to Source Definition" (see here). It is still a work in progress I believe (given this discussion thread), but should be working properly in most cases.

Upvotes: 1

Brady Holt
Brady Holt

Reputation: 2924

TypeScript 2.9 introduced a compilerOption called declarationMap. Per the release notes:

Enabling --declarationMap alongside --declaration causes the compiler to emit .d.ts.map files alongside the output .d.ts files. Language Services can also now understand these map files, and uses them to map declaration-file based definition locations to their original source, when available.

In other words, hitting go-to-definition on a declaration from a .d.ts file generated with --declarationMap will take you to the source file (.ts) location where that declaration was defined, and not to the .d.ts.

I submitted a PR on your example repo to enable this setting.

Upvotes: 15

Related Questions