如何记录返回函数调用的函数(用于优化尾部调用)

时间:2020-05-24 04:47:09

标签: javascript jsdoc

我正在尝试学习JSDoc,并且我有这种方法:

/**
 * Cleanup step.
 *
 * @return {Void}
 */
beforeDestroy() {
    window.removeEventListener('resize', this.onResize);
},

这似乎是正确的,但是对于我通常的JavaScript编码样式,我会这样:

beforeDestroy() {
    return window.removeEventListener('resize', this.onResize);
},

因为我总是尝试返回一个函数调用(作为与尾调用优化相关的函数编程习惯)。这引出了我的问题:如何记录返回函数调用的函数?

我天真的估计是这样的:

/**
 * Cleanup step.
 *
 * @return {(String, Function) => Void}
 */
beforeDestroy() {
    return window.removeEventListener('resize', this.onResize);
},

我想听听这种事情的正确/正常之处。我想知道如何在函数“返回返回void的函数调用”或“返回返回字符串的函数调用”这样的文档中进行记录。

我曾经见过人们问过咖喱函数,而这种情况在记录方面对我来说立即变得一发不可收拾,就像一个人需要多少个函数?

这种事情对我来说似乎不合理:

 * @return {(String, Function) => (Object) => Void}

像“文档”需要多少对未来执行的了解?

1 个答案:

答案 0 :(得分:1)

您使用@callback(或@function);参见:https://jsdoc.app/tags-callback.html

例如,类似的东西。

/**
 * This callback is a returned event listener
 * @callback removedCallback
 * @param {number} nameOfNumberParam
 * @param {string} nameOfStringParam
 */

/**
 * Cleanup step.
 *
 * @return {removedCallback} - The removed callback
 */
beforeDestroy() {
    return window.removeEventListener('resize', this.onResize);
},

但是,您也想问问自己……这对每个人真的有用吗,还是我只是在记录文件?如果您真正想要的是类型系统,那么Typescript可以做得更好(除了文档以外,还有很多其他好处)。

如果您只想获取文档,请考虑您的受众。对于某些受众来说,上述风格将是最好的,但更简单的话,可能还会为其他许多风格提供很好的服务:

/**
 * Cleanup step.
 *
 * @return function - The removed callback
 */
beforeDestroy() {
    return window.removeEventListener('resize', this.onResize);
},