VS代码中的JSDoc,用于使用模块类型记录功能

Nur*_*lyk 6 javascript node.js jsdoc visual-studio-code

我要记录使用另一个模块编写的函数,该模块使用http.ClientRequest类型的参数。我想要这样的东西,但是不起作用:

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

function setToken(req) {
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过@param {http.ClientRequest},但是没有用。

更新: 基本上,我通过导入所需的模块解决了该问题import http from "http";。但是,我不想导入它,因为此模块不使用http module而是提供辅助功能。

小智 6

从 IGx89 改进答案后,我得到了一个没有 typedef 的更短的变体。当我一次引用另一个模块时,我更喜欢这个变体:

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

}
Run Code Online (Sandbox Code Playgroud)

但是如果你需要从另一个具有长路径变体的模块中引用某种类型,typedef 看起来更短。


小智 -1

它不起作用,因为它是 JSDoc 不知道的自定义类型。您必须使用@typedef 设置您自己的定义。

/**
* A number, or a string containing a number.
* @typedef {(number|string)} NumberLike
*/

/**
* Set the magic number.
* @param {NumberLike} x - The magic number.
*/
function setMagicNumber(x) {
}
Run Code Online (Sandbox Code Playgroud)

请参阅JSDoc typedef 标记定义示例的完整示例

我做了一个对 JSDoc 3.5.3 有用的例子

/** @typedef {ClientRequest} TestReq */

/**
* @param {TestReq} req 
*/
function setToken(req) {
}
Run Code Online (Sandbox Code Playgroud)

JSDoc 输出图像