TLDR 版本是:我想使用 JSDoc 在 JavaScript 中记录一个外部“类”,其中属性之一是带有命名参数的函数(方法),并让它以可读的方式显示在 Visual Studio Code 中。我尝试了 3 种不同的方法,但没有一个能达到我想要的效果。
最接近的是这种方法,也是我目前正在使用的:
/**
* @typedef Zzz_BaseObject
* @type {object}
* @property {function(string):Zzz_Value} getValue Returns the Value held by this Node/Edge for the attribute with the given id.
*/
请注意,该参数没有名称(只有 arg0)。如果我指定一个名称: function(id:string) 那么它根本无法理解该属性(在 VSCode 中,即鼠标悬停不执行任何操作)。
我也尝试过:
/**
* This is a predefinition of the method that is inside the Object
* It will be used as the type at @property {Type} for the method
* @typedef {Function} getValueFunction
* @param {String} attributeID
* @returns {Zzz_Value}
*/
和
* @property {getValueFunction} getValue Returns the Value held by this Node/Edge for the attribute with the given id.
这导致只是说该属性是一个函数(没有更多信息)
我也尝试过:
/**
* @typedef {(attributeId:string) => Zzz_Value} getValueFunction2
*/
然后说属性的类型是 getValueFunction2.... 但没有更多信息。
现在,血淋淋的细节(跳过,与主要问题无关,只是为什么明显的解决方法不起作用)。
需要明确的是,我想要的是 VSCode 在鼠标悬停时说: (property) getValue: (attributeId: string) => Zzz_Value