我应该指出我正在使用VSCode作为我的IDE
问题
如何记录@typedef
以使其成为@namespace
的成员? (我对@module
或其他JSDoc标签持开放态度,但似乎与此方法最接近)
我正在开发一个React项目,并将我的域对象表示为实体
文件夹结构
- entities/
- group/
- group-actions.js
- group-model.js
- group-reducer.js
- group-selectors.js
- group-service.js
- index.js
index.js
import Actions from './group-actions';
import Model from './group-model';
import reducer from './group-reducer';
import Selectors from './group-selectors';
import Service from './group-service';
/**
* GroupNamespace
* @namespace Group
*/
const Group = {
Actions,
Model,
reducer,
Selectors,
Service,
};
/**
* Group
* @typedef {Object} GroupInstance
* @memberof Group
* @property {Object[]} members
* @property {Object} permissions
*/
export default Group;
现在,我想定义一个React组件,它接收GroupInstance
作为prop
我希望在intellisense下拉列表中看到members
,但不要。{/ p>
现在,如果我将@property
定义更改为@property {Group} group
,我会在@namespace上获得intellisense
答案 0 :(得分:2)
@typedef的文档位于https://jsdoc.app/tags-typedef.html#syntax。
我发现您有两种选择:
选项1使用@typedef
并附加数据类型,并包括单独的@name
和@memberOf
选项1的示例:
/**
* Your description goes here.
* @typedef {type}
* @memberOf module:your/module
* @name yourTypedefName
*/
选项2是省略@name
和@memberOf
,并在@typedef
中定义数据类型的完整路径
-https://jsdoc.app/tags-typedef.html
选项2的示例
/**
* Your description goes here.
* @typedef {Object} module:your/module.yourTypedefName
*/
此外,您还可以将@type与类型一起放在单独的行中,然后对于选项1,带有@typedef的行将只带有@typedef。