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

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

我有一个函数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在我的events函数中为factory自变量的这种结构编写文档?

我唯一想到的解决方案是使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个回答
0
投票

enter image description here

您可以使用TS语法。

ps.s。老实说,我不确定这是否到处都是。但它至少适用于智能感知

/**
 * @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]
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.