简体   繁体   English

如何使用jsdoc在webstorm中记录类型?

[英]How can I document a type in webstorm using just jsdoc?

When I write the following code, the annotator tells me that BrowserSelector is not defined in the second typedef: 当我编写以下代码时,注释器告诉我没有在第二个typedef中定义BrowserSelector

/**
 * @typedef {{name: String, minVer: Number, maxVer: Number}} BrowserSelector
 */

/**
 * @typedef {{type:String, browser: BrowserSelector, attribute: Object}} Selector
 */

I believe it is not associating the type with the name. 我认为它没有将类型与名称相关联。 How can I do that? 我怎样才能做到这一点?

I would prefer not to add actual code for it, just jsdoc comments. 我不想为它添加实际代码,只是jsdoc注释。

I'm using this comment style for 'struct' like types: 我正在使用这个注释样式的'struct'类型:

/**
 * @name BrowserSelector
 * @property {String} name
 * @property {Number} minVer
 * @property {Number} maxVer
 */

/** @type {BrowserSelector|*} */
var mySelector = {}; // no warning because of '*' in @type :S
mySelector.name = 'foo'; // no warning :)
mySelector.id = 'bar'; // warning :)

Multiple comments to describe properties is not necessary as of Webstorm 7 (perhaps earlier). 从Webstorm 7开始,可能不需要多条注释来描述属性(可能更早)。

/**
 * @name BrowserSelector
 * @type {{
 *     name: String,
 *     minVer: Number,
 *     maxVer: Number
 * }}
 */

I recently noticed in the AngularJS source code that they also annotated stuff without any directly attached code. 我最近注意到在AngularJS源代码中,他们还注释了没有任何直接附加代码的东西。 I tried the same principle on your case and came up with the following (even code-completion and type checking work with it in WebStorm): 我在你的案例中尝试了相同的原则,并提出了以下内容(甚至代码完成和类型检查在WebStorm中使用它):

/**
 * @name BrowserSelector
 */
/**
 * @name BrowserSelector#name
 * @type {string}
 */
/**
 * @name BrowserSelector#minVer
 * @type {number}
 */
/**
 * @name BrowserSelector#maxVer
 * @type {number}
 */

/**
 * @name Selector
 */
/**
 * @name Selector#type
 * @type {string}
 */
/**
 * @name Selector#browser
 * @type {BrowserSelector}
 */
/**
 * @name Selector#attribute
 * @type {Object}
 */

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM