2013-05-17 11 views
18

Quando scrivo il seguente codice, il commentatore mi dice che BrowserSelector non è definito nel secondo typedef:Come posso documentare un tipo in webstorm usando solo jsdoc?

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

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

io credo che non sta associando il tipo con il nome. Come lo posso fare?

Preferirei non aggiungere codice effettivo per questo, solo commenti jsdoc.

+2

A partire dal v10.0.4, [ '@ typedef' ancora sembra spezzato in WebStorm] (https : //youtrack.jetbrains.com/issue/WEB-11189). –

risposta

19

sto usando questo commento stile per 'struct' come tipi:

/** 
* @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 :) 

+0

Questa è la struttura attualmente in uso, perché ancora non sembra che Webstorm v8 capisca @typedef. –

+0

Presumibilmente, ['supporto @typedef è stato risolto] (https://youtrack.jetbrains.com/issue/WEB-11189) ma ho scoperto che non funziona ancora in WebStorm 10.0.4. –

8

Recentemente ho notato nel codice sorgente di AngularJS che hanno anche annotato roba senza alcun codice direttamente collegato. Ho provato lo stesso principio sul vostro caso e si avvicinò con il seguente (anche il completamento del codice e controllo di tipo di lavoro con essa in 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} 
*/ 
+1

Sembra che \ @propertyOf non sia necessario, viene dedotto da \ @name, webstorm 6.0.2 –

11

commenti multipli per descrivere le proprietà non è necessaria in quanto di WebStorm 7 (forse in precedenza).

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

Esiste un modo per commentare questo formato per descrivere il significato o il nome del nome? – Snekse

Problemi correlati