我想记录一个用另一个模块编写的函数,它使用http.ClientRequest类型参数。我想要这样的东西,但它不起作用:
/**
* @param {ClientRequest} req
*/
function setToken(req) {
}
我也试过@param {http.ClientRequest}
,但它没有用。
更新:基本上我通过import http from "http";
导入所需的模块解决了这个问题。但是,我不想导入它,因为该模块不使用http module
但提供辅助函数。
在改进了IGx89的答案后,我得到了一个没有typedef的较短变种。当我一次引用另一个模块时,我更喜欢这个变体:
/**
* @param {import('http').ClientRequest} req
*/
function setToken(req) {
}
但是,如果您需要从具有长路径变量的另一个模块引用某些类型,并且typedef看起来更短。
将以下内容添加到文件顶部:
/** @typedef {import('http').ClientRequest} ClientRequest */
我自己也有同样的问题(虽然关于我自己的应用程序中的模块),也很难找到解决方案。我最终通过在TypeScript GitHub repo中阅读这个问题找出了上面的语法:https://github.com/Microsoft/TypeScript/issues/14377
它不起作用,因为它是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) {
}