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

问题描述 投票:0回答:1

我正在尝试学习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}

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

javascript jsdoc
1个回答
0
投票

您使用@callback;参见: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可以提供更好的功能(除了文档以外,还可以给您带来很多其他好处)。

至少在我看来,当您有更复杂的文档需求时,应该保留对JSDoc的这种使用。对于许多商店和/或更简单的情况,类似下面的内容可以很好地完成工作:

/**
 * Cleanup step.
 *
 * @return func - The removed callback
 */
beforeDestroy() {
    return window.removeEventListener('resize', this.onResize);
},
© www.soinside.com 2019 - 2024. All rights reserved.