例子:
/**
* @typedef {Object} LabelValue
* @template T
* @property {String} label
* @property {T} value
*/
可以用做
/** @type {LabelValue<SomeType>} */
我想像这样扩展这个基类型(也许这只是语法错误,我不确定):
/**
* @typedef {LabelValue<T>} LabelValueExtended
* @template T
* @property {String} extensionProp
*/
我使用webstorm,但它不会根据使用的类型显示任何建议,例如:
/** @type {LabelValueExtended<SomeType>} */
此变体也不会触发webstorm的任何建议:
/**
* @typedef {LabelValue} LabelValueExtended
* @template T
* @property {String} label
* @property {T} value
* @property {String} extensionProp
*/
Object
模板工作正常。E、 g.这项工作:
/**
* @typedef {Object} LabelValueExtended
* @template T
* @property {String} label
* @property {T} value
* @property {String} extensionProp
*/
我的第一个基类型的例子也很好,因为它扩展了common
/**
* @typedef {Object} Dummy
* @property {String} dummy
*/
/**
* @typedef {Dummy} LabelValue
* @template T
* @property {String} label
* @property {T} value
*/
它也打破了webstorm的任何属性建议。
没有模板的类型可以正常工作。例如。
/**
* @typedef {Object} Dummy
* @property {String} dummy
*/
/**
* @typedef {Dummy} LabelValue
* @property {String} label
* @property {*} value
*/
/** @type {LabelValue} */
,然后webstorm正确地建议了这两种类型的道具,但显然我不会得到任何建议
value
问题是:我对jsdoc和模板使用了错误的语法(请建议使用有效的语法),还是webstorm仅仅处理了错误的语法?