JSDoc in VS code for documenting function with module's type

Viewed 2200

I want to document a function written in another module, which uses http.ClientRequest typed parameter. I want something like this, but it does not work:

/**
* @param {ClientRequest} req 
*/

function setToken(req) {
}

I have tried also @param {http.ClientRequest}, but it did not work.

Update: Basically I solved that problem by importing the required module by import http from "http";. However, I don't want to import it because this module does not use http module but provides helper functions.

3 Answers

After improve answer from IGx89 I got a shorter variant without typedef. I prefer this variant when I reference to another module one time:

/**
* @param {import('http').ClientRequest} req 
*/
function setToken(req) {

}

But if you need reference to some type from another module with long path variant with typedef looks shorter.

Add the following to the top of your file:

/** @typedef {import('http').ClientRequest} ClientRequest */

I had this same problem myself (though regarding a module in my own app) and also had a very hard time finding the solution. I eventually figured out the above syntax by reading through this issue in the TypeScript GitHub repo: https://github.com/Microsoft/TypeScript/issues/14377

Related