问题
Assuming I have a typedef type in a js module
// somewhere/foo.js
/**
* @module
*/
/**
* @typedef Foo
* @type {object}
* property {string} bar - some property
*/
Is it possible to reference this type in another module, so that in the HTML page generated by jsdoc, the type is displayed as a link to the typedef-ed module ?
I tried variations of this, but nothing seems to work...
// somewhere_else/bar.js
/**
* @module
*/
/**
* @param {somewhere/foo/Foo} foo - some param
*/
export default function doStuff(foo) {
...
}
回答1:
This works for me ...
// somewhere/foo.js
/**
* @module foo
*/
/**
* @typedef module:foo.Foo
* @type {object}
* @property {string} bar - some property
*/
and ...
// somewhere_else/bar.js
/// <reference path="foo.js" />
/**
* @module bar
*/
/**
* @param {module:foo.Foo} foo - some param
*/
function doStuff(foo) {
//...
};
回答2:
The above answer shows up high in search results so I'm documenting what worked for me in case it helps someone in a similar situation.
I'm using Visual Studio code for a node project with // @ts-check
on all my modules. Using the above syntax hiccups on the module:
syntax. Also, the code assistance doesn't work properly. It took me a while but the answer ended up being quite simple
If I have the typedef myTypedef
in a module myModule
then in the second module where I require myModule
mm = require(myModule)
I can use something like/** @param {mm.myTypedef} myParamName */
来源:https://stackoverflow.com/questions/42829250/jsdoc-reference-typedef-ed-type-from-other-module