gzt*_*mas 18 javascript jsdoc webstorm
当我编写以下代码时,注释器告诉我BrowserSelector在第二个typedef中没有定义:
/**
* @typedef {{name: String, minVer: Number, maxVer: Number}} BrowserSelector
*/
/**
* @typedef {{type:String, browser: BrowserSelector, attribute: Object}} Selector
*/
Run Code Online (Sandbox Code Playgroud)
我认为它没有将类型与名称相关联.我怎样才能做到这一点?
我不想为它添加实际代码,只是jsdoc注释.
小智 20
我正在使用这个注释样式的'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 :)
Run Code Online (Sandbox Code Playgroud)
Mik*_*uck 11
从Webstorm 7开始,可能不需要多条注释来描述属性(可能更早).
/**
* @name BrowserSelector
* @type {{
* name: String,
* minVer: Number,
* maxVer: Number
* }}
*/
Run Code Online (Sandbox Code Playgroud)
小智 8
我最近注意到在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}
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6560 次 |
| 最近记录: |