Как я могу документировать тип в webstorm, используя только jsdoc?
когда я пишу следующий код, аннотатор говорит мне, что BrowserSelector
не определено во втором typedef:
/**
* @typedef {{name: String, minVer: Number, maxVer: Number}} BrowserSelector
*/
/**
* @typedef {{type:String, browser: BrowserSelector, attribute: Object}} Selector
*/
Я считаю, что он не связывает тип с именем. Как я могу это сделать?
Я бы предпочел не добавлять фактический код для него, просто комментарии jsdoc.
3 ответов
Я использую этот стиль комментариев для "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 :)
несколько комментариев для описания свойств не требуется с Webstorm 7 (возможно, ранее).
/**
* @name BrowserSelector
* @type {{
* name: String,
* minVer: Number,
* maxVer: Number
* }}
*/
недавно я заметил в исходном коде AngularJS, что они также аннотировали материал без какого-либо непосредственно прикрепленного кода. Я попробовал тот же принцип на вашем случае и придумал следующее (даже завершение кода и проверка типа работают с ним в 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}
*/