使用以下代码:
/**
* @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属性自动完成。
发生了什么?