JSDoc 中对象中任意键值的文档结构
Document structure of a value for arbitrary keys in an Object in JSDoc
我有一个函数factory
:
function factory(events) {
for(const key in events) {
const { before, after } = events[key]
}
}
参数 events
通常是:
{
only: {
before(){}
after(){}
},
except: {
before(){}
after(){}
},
}
键 only
、except
可以是任何值,但值始终(必须)是 {before, after}
类型,其中 before
、after
是函数。
如何使用 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 中提取这些类型定义。
您可以使用 TS 语法。
p.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]
}
}
我有一个函数factory
:
function factory(events) {
for(const key in events) {
const { before, after } = events[key]
}
}
参数 events
通常是:
{
only: {
before(){}
after(){}
},
except: {
before(){}
after(){}
},
}
键 only
、except
可以是任何值,但值始终(必须)是 {before, after}
类型,其中 before
、after
是函数。
如何使用 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 中提取这些类型定义。
您可以使用 TS 语法。
p.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]
}
}