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

时间:2019-01-02 11:15:18

标签: javascript webstorm jsdoc

我正在使用JSDoc样式编写一些代码注释,并想了解*=在由WebStorm生成的@returns {function(*=): *}中的含义。

我试图搜索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
}

我想知道*=@returns {function(*=): *}中的含义。

1 个答案:

答案 0 :(得分:5)

查看底部的编辑内容!

在WebStorm中使用一小段代码对其进行测试似乎表明*=表示参数不是可选,并且可以是任何类型,其中*表示该参数为任何类型和可选的。请参见下面的示例,其中包含从WebStorm生成的jsdoc:

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

如您所见,我们仅使用第一个参数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日