Explanation
I'm not sure if my answer is direct answer to original question, but as I suppose a lot of people come here to just find a way to tell their IDEs to understand types, I'll share what I found.
If you want to tell VSCode to understand your types, do as follows. Please pay attention that js
runtime and NodeJS
does not care about these types at all.
Solution
1- Create a file with .d.ts
ending: e.g: index.d.ts
. You can create this file in another folder. for example: types/index.d.ts
2- Suppose we want to have a function called view
. Add these lines to index.d.ts
:
/**
* Use express res.render function to render view file inside layout file.
*
* @param {string} view The path of the view file, relative to view root dir.
* @param {object} options The options to send to view file for ejs to use when rendering.
* @returns {Express.Response.render} .
*/
view(view: string, options?: object): Express.Response.render;
3- Create a jsconfig.json
file in you project's root. (It seems that just creating this file is enough for VSCode to search for your types).
A bit more
Now suppose we want to add this type to another library types. (As my own situation). We can use some ts
keywords. And as long as VSCode understands ts
we have no problem with it.
For example if you want to add this view
function to response from expressjs, change index.d.ts
file as follows:
export declare global {
namespace Express {
interface Response {
/**
* Use express res.render function to render view file inside layout file.
*
* @param {string} view The path of the view file, relative to view root dir.
* @param {object} options The options to send to view file for ejs to use when rendering.
* @returns {Express.Response.render} .
*/
view(view: string, options?: object): Express.Response.render;
}
}
}
Result

