javascript - 如何记录返回函数调用的函数(用于尾调用优化)
问题描述
我正在尝试提高 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
(或@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);
},
推荐阅读
- bash - 从 bash 脚本启动远程 (ssh) jupyter notebook
- android - java.lang.NullPointerException at firebase.auth.FirebaseUser.getEmail() 并说 currentUser() 返回 null
- ios - 我想在 openssl 中为 diffiehellman 更改 P 和 G 的值
- automation - 如何使用 OEMDRV 卷自动安装 CentOS7 最小启动安装?
- java - LatencyUtils 'recordLatency' 方法的时间单位问题
- google-apps-script - 访问已被 IMPORTRANGE 和 FILTER 引用的 GSheet 单元格中的 URL
- reactjs - 如何深入检查来自 Redux 商店的 nextProps?
- java - 使用 @MockBean 或 @Autowired 模拟测试
- java - Java中静态递归函数的PowerMockito verifyStatic()方法的问题
- python - 使用 Python 测试回文时输出不正确