Reputation: 6002
I am working on a typescript project with Visual Studio Code including multiple npm packages structured like this:
/src/index.ts
/dist/...
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
However, I want VSCode to open the corresponding .ts
file in /src
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
yarn bootstrap
in order to replicate the issue.Upvotes: 14
Views: 3755
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
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