lag*_*lex 2 javascript documentation jsdoc
我有一个功能factory:
function factory(events) {
for(const key in events) {
const { before, after } = events[key]
}
}
Run Code Online (Sandbox Code Playgroud)
参数events通常是:
{
only: {
before(){}
after(){}
},
except: {
before(){}
after(){}
},
}
Run Code Online (Sandbox Code Playgroud)
其中键only,except可以是任何内容,但值始终(必须是)类型,{before, after}其中before,after都是函数。
如何使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
但我真的想保留原来的结构。
是否可以event在我的原始结构中记录此类型定义?
我主要关心它在 VSCode 中的工作,它从 JSDoc 中提升了这些类型定义。
您可以使用 TS 语法。
ps 老实说,我不确定这是否适用于所有地方。但它至少适用于智能感知
/**
* @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]
}
}
Run Code Online (Sandbox Code Playgroud)