`function(*=)`在JSDoc风格的代码注释中意味着什么?

KIn*_*GcC 11 javascript jsdoc webstorm

我正在写使用JSDoc风格的一些代码注释,并想知道*=意味着@returns {function(*=): *}这是由WebStorm产生.

我试图搜索JSDoc wiki和usejsdoc.org,但没有结果.

以下是我的代码:

/**
 * Get record data listener generator.
 * @param {Function} createProps
 * @returns {function(*=): *}        // ** generated by webstorm **
 */
export function getRecordCustomDataListener(createProps) {
  return (callback) => onRecordCustomData({ createRecordData: createProps })(callback); // `onRecordCustomData` has not default argument
}
Run Code Online (Sandbox Code Playgroud)

我想知道是什么*=意思@returns {function(*=): *}.

Xat*_*nev 5

请参见底部的编辑!!

使用一个小片段在WebStorm中测试它似乎表明这*=意味着参数不是可选的,并且可以是任何类型,其中*指示参数是任何类型和可选的.请参阅以下示例,其中包含WebStorm生成的jsdoc:

/**
 *
 * @param createProps
 * @returns {function(*=, *): void}
 */
export function a(createProps) {
    return (callback, callback2) => console.log(callback);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我们只使用第一个参数callback并保持callback2未使用状态.Webstorm为此生成适当的jsdoc.

以上英语单词中我们的例子的完整jsdoc: Return an arrow function that takes two parameters, a **not** optional first parameter that can be of any type, and an optional second parameter that can be of any type. That function returns void

文件参考:

http://usejsdoc.org/tags-type.html

可选参数

一个名为foo的可选参数.

@param {number} [foo]

// 要么:

@param {number =} foo

可选参数foo,默认值为1.

@param {number} [foo = 1]


编辑:文档表明这=意味着,optional parameter但webstorm生成它具有相反的意义.无论是错误记录还是WebStorm都错了.我在WebStorm 2018.1 Build#WS-181.4203.535上测试了它,它建于2018年3月22日