【发布时间】:2015-01-29 00:07:01
【问题描述】:
使用以下代码:
/**
* @typedef {foo} MyFoo
* @property {String} fooText
* @property {Number} fooValue
*/
/**
* @type {MyFoo}
*/
var foo = {
fooText : '',
fooValue : 0
};
/**
* @param {MyFoo} someFoo
* @returns {MyFoo}
*/
function doStuff(someFoo)
{
var result = Object.create(foo);
result.fooText = someFoo.fooText + '!';
result.fooValue = someFoo.fooValue + 1;
return result;
}
var someFoo = Object.create(foo);
someFoo.fooText = 'Hello';
someFoo.fooValue = 3;
var someOtherFoo = doStuff(someFoo);
var anotherFoo = doStuff(someOtherFoo);
我创建了一个类型MyFoo。我使用这个类型作为函数doStuff的参数和返回值。然后,我反复调用doStuff函数,首先使用Object.create创建的对象,然后使用上一次调用的返回值。
这里是问题:
参数类型 MyFoo 不能分配给参数类型 MyFoo
另外,someOtherFoo 和 anotherFoo 不再使用 MyFoo 属性自动完成。
发生了什么事?
【问题讨论】:
标签: javascript webstorm jsdoc