使用JSDoc覆盖函数参数中给定类型的默认成员

时间:2015-01-27 16:45:54

标签: javascript webstorm jsdoc

考虑以下设置,

/**
 * @typedef {generalObject} GeneralObject
 * @type {Object}
 * @property {Object} generalField
 */
var generalObject = {
  generalField : {}
};

/**
 * @typedef {specificObject} SpecificObject
 * @type {GeneralObject}
 * @extends {GeneralObject}
 * @property {Object} foobar
 */
var specificObject = Object.create(generalObject, {
  specificField : {
    value : {}
  }
});

/**
 * @typedef {exampleContainer} Container
 * @type {Object}
 * @property {GeneralObject} object1
 */
var exampleContainer = {
  object1 : Object.create(generalObject)
};

我们有一个容器,其字段类型为GeneralObjectSpecificObject类型为GeneralObject。现在,具有以下功能:

/**
 * @param {Container} container
 */
function doSomething(container) {
  container.object1.//Auto-completed with 'generalField'
}

/**
 * @param {Container} container
 * @param {SpecificObject} container.object1
 */
function doSomethingSpecific(container) {
  container.object1.//Not auto-completed with 'specificField'
}

doSomething函数需要一个经典容器并且工作正常,但doSomethingSpecific函数希望container.object1SpecificObject类型,同时保留Container的其余部分1}}类型。

正如评论所说,WebStorm的自动完成功能不会将container.object1识别为SpecificObject,而是识别为GeneralObject

有没有办法获得这种行为?如果是这样,用正确的方法覆盖第一个@param和第二个{?p>

0 个答案:

没有答案