2017-03-16 64 views
1

类型假设我一个js模块jsdoc:参考的typedef-ED从其它模块

// somewhere/foo.js 
/** 
* @module 
*/ 
/** 
* @typedef Foo 
* @type {object} 
* property {string} bar - some property 
*/ 

在有一个typedef类型是否有可能在其他模块引用该类型,使得在HTML页面通过jsdoc产生,类型显示为typedef-ed模块的链接?

我想这个变化,但似乎没有任何工作...

// somewhere_else/bar.js 
/** 
* @module 
*/ 
/** 
* @param {somewhere/foo/Foo} foo - some param 
*/ 
export default function doStuff(foo) { 
    ... 
} 

回答

1

这对我的作品......

// somewhere/foo.js 
/** 
* @module foo 
*/ 
/** 
* @typedef module:foo.Foo 
* @type {object} 
* @property {string} bar - some property 
*/ 

和...

// somewhere_else/bar.js 
/// <reference path="foo.js" /> 
/** 
* @module bar 
*/ 
/** 
* @param {module:foo.Foo} foo - some param 
*/ 
function doStuff(foo) { 
    //... 
}; 
+0

全在@typedef中限定模块确实有效(我personnaly编写了'@typedef {Object} module:foo/Foo',但这是一个有趣的事情。)但是:1/////rence path =“foo.js”/>'似乎不是必需的,我无法在任何地方找到它。 2 /如果模块有一个很长的路径(比如'somewhere/foo'),在任何地方打字都有点乏味,你知道有什么窍门可以让它变成别的吗? – phtrivier

+0

@phtrivier 1.对不起,参考只是从我的测试中复制和粘贴,忽略它。 2.完全同意你,有点乏味;不幸的是,“别名”是我们记录的方式(特别是原型)。事实上,它看起来并不那么糟糕。我看到它的好处:使用这种方法或类型的开发人员会准确知道它在哪里定义,所以它不仅帮助创建正确的文档,而且在开发过程中查找有效的引用。还有一种方法是使用“@exports”,但我没有发现这个选项,所以不能发表评论。 –