我正在尝试学习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}
像“文档”需要多少对未来执行的了解?
您使用@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);
},