gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:05:06 26 4
gpt4 key购买 nike

我有一个函数工厂:

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

参数events通常是:

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

其中键 only except 可以是任何内容,但值始终(必须)为 {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
}
}

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

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

我主要关心它在 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/59063496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com