javascript - JSDoc 中对象中任意键值的文档结构

标签 javascript documentation jsdoc

我有一个功能 factory :

function factory(events) {
  for(const key in events) {
    const { before, after } = events[key]
  }
}

凡论events通常是:

{
  only: {
    before(){}
    after(){}
  },
  except: {
    before(){}
    after(){}
  },
}

key 在哪里only , except可以是任何值,但值总是(必须是)类型 {before, after}其中两个before , after是函数。

我如何为 events 记录此结构我的 factory 中的争论函数使用 JSDoc?

我能想到的唯一解决方案是制作 events一个数组,然后我可以使用 typedef像这样:

/**
 * @typedef event
 * @property {function} before
 * @property {function} after
 */
/**
 * @typedef eventTuple
 * @property {string} key
 * @property {event} event
 */
/**
 * @param {[eventTuple]} events
 */
function factory(events) {
  for(const { key, event } of events) {
    const { before, after } = event
  }
}

但我真的想保留原来的结构。

是否可以记录此 event我原始结构中的类型定义?

我主要关心它在 VSCode 中工作,它从 JSDoc 中提升了这些类型定义。

最佳答案

enter image description here

您可以使用 TS 语法。

附言老实说,我不确定这是否适用于任何地方。但它至少适用于智能感知

/**
 * @typedef event
 * @property {function} before
 * @property {function} after
 */

/**
 * @param {{[key: string]: event}} events
 */
function factory(events) {
    for (const key in events) {
        const { before, after } = events[key]
    }
}

关于javascript - JSDoc 中对象中任意键值的文档结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081797/

相关文章:

JavaScript 类有返回 this 的 setter。我如何在 JsDoc 中记录这一点?

javascript - 我如何自定义此 Canvas 的设计?

javascript - 重试失败的 Mocha 测试

javascript - 如何将数组从 wpf 控件传递到 webbrowser 控件中的 javascript 函数?

javascript - 滚动垂直视差

documentation - 如果实际的 IP 地址是 secret 的,在公共(public)错误报告中使用什么 IP 地址?

documentation - 这是一个 in 或 in/out 参数吗? Doxygen,C++

html - 用 HTML 标签替换 Doxygen detaileddescription 标签

javascript - 使用 JSDoc 记录工厂

javascript - 如何记录返回的事件发射器