我可以在JSDoc @return中引用一个param类型吗?

时间:2017-07-25 16:31:35

标签: javascript jsdoc

我想记录一个函数,其返回类型取决于提供的参数:

/**
* @param {*} x A thing
* @return {????} The thing in an array
*/
function arrayOf(x) { return [x]; }

是否可以命名或以其他方式引用函数参数的实际类型,以便我可以使用它来指定返回值?

2 个答案:

答案 0 :(得分:1)

我对另一个答案发表了评论,说我要寻找的归结为一个通用参数,该参数在JSDoc中使用@template实现。我不知道它是否是核心JSDoc的一部分-我认为这是一个Closure扩展-但是如果您是通过TS运行JS,或者只是试图在IDE中自动完成工作,则为Typescript does recognize it

从该链接改编而成:

/**
 * @template T
 * @param {T} x - A generic parameter that flows through to the return type
 * @return {T[]}
 */
function id(x) {
  return [x];
}

答案 1 :(得分:0)

不知道是否有通用的表示方式 - 这需要在函数描述中指定,但可能是以下选项:

对于详细描述,可能会创建一个事物typedef

/**
 * Thing Type
 * @typedef {*} thing
 */

/**
 * Returns a single element array encapsulating only the param value
 * @param {thing} x A thing
 * @return {thing[]} The thing in an array
 */
function arrayOf(x) { return [x]; }

其他,简单地说,

/**
 * Returns a single element array encapsulating only the param value
 * @param {*} x A thing
 * @return {*[]} The thing in an array
 */
function arrayOf(x) { return [x]; }