【问题标题】:Document structure of a value for arbitrary keys in an Object in JSDocJSDoc中对象中任意键的值的文档结构
【发布时间】:2019-11-27 05:22:26
【问题描述】:

我有一个函数factory

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

参数events 通常在哪里:

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

其中onlyexcept 键可以是任何值,但值始终(必须是){before, after} 类型,其中beforeafter 都是函数。

如何使用 JSDoc 在我的 factory 函数中为 events 参数记录这个结构?

我能想到的唯一解决方案是将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 中提升了这些类型定义。

【问题讨论】:

    标签: javascript documentation jsdoc


    【解决方案1】:

    您可以使用 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]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 2020-04-26
      • 2019-01-29
      相关资源
      最近更新 更多