tmp dev
tmp dev

Reputation: 9193

VSCode goto implementation, goto definition, goto type definition, difference

I noticed VSCode has the following

I'm a bit confused as to how these work, sometimes they even open up a peek definition. Can someone please provide a practical example on the usages of this. I found the following Difference between Goto Definition and Goto Implementation in Visual Studio but its lacking goto type definition.

Upvotes: 11

Views: 6869

Answers (2)

Grisha
Grisha

Reputation: 353

I would recommend installing language specific modules if the above mentioned commands do nothing. When I began to work with golang, none of these commands worked. I had to install a few modules/commands such as gopls, go-outline, guru, and godef, which were prompted for the installation by VS Code. After that support for browsing experience became similar to what we have in Visual Studio for C#.

Upvotes: 0

Andre Figueiredo
Andre Figueiredo

Reputation: 13425

Well, go to type definition does exactly what it says.

VS Code documentation provides us all that info:

Go to Type Definition

Some languages also support jumping to the type definition of a symbol by running the Go to Type Definition command from either the editor context menu or the Command Palette. This will take you to the definition of the type of a symbol. The command editor.action.goToTypeDefinition is not bound to a keyboard shortcut by default but you can add your own custom keybinding.


Regarding your questions:

sometimes they even open up a peek definition

It shows peek definition popup window when it found more than one candidate, and leave to you choose where to jump.

I'm a bit confused as to how these work

These terms have meaning for some languages, such as C#, and full support of VS Code. In other languages, such as Ruby, despite having Interfaces, VS Code seems have no support for Go To Implementation for example. Then you have JavaScript, which does not have Interfaces, in this case Go To Implementation routes to Go To Definition.

Can someone please provide a practical example on the usages of this.

You already have Go To Implementation and Go To Definition, here it goes Go To Type Definition (since it's been a while I haven't coded this type of language, I may be wrong in some detail):

1: class Animal
2: end
3:
4: Animal dog = new Animal();

In line 4:

  • Go To Type Definition on symbol "dog" -> l1
  • Go To Definition on symbol "dog" -> l4
  • Go TO Definition on symbol "Animal" -> l1

Upvotes: 9

Related Questions