VS代码中的JSDoc,用于记录具有模块类型的函数

时间:2017-07-17 10:07:42

标签: javascript node.js visual-studio-code jsdoc

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

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

function setToken(req) {
}

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

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

3 个答案:

答案 0 :(得分:2)

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

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

}

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

答案 1 :(得分:1)

在文件顶部添加以下内容:

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

我自己也遇到了同样的问题(尽管关于我自己的应用程序中的模块),并且也很难找到解决方案。我最终通过阅读TypeScript GitHub存储库中的这个问题来弄清楚上述语法:https://github.com/Microsoft/TypeScript/issues/14377

答案 2 :(得分:-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) {
}

请参阅JSDoc typedef tag definition examples

上的完整示例

我做了一个使用JSDoc 3.5.3

为我工作的例子
/** @typedef {ClientRequest} TestReq */

/**
* @param {TestReq} req 
*/
function setToken(req) {
}

JSDoc output image