如何将@typedef记录为@memberof @namespace

时间:2018-04-01 16:20:04

标签: javascript visual-studio-code jsdoc

我应该指出我正在使用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

enter image description here

我希望在intellisense下拉列表中看到members,但不要。{/ p>

现在,如果我将@property定义更改为@property {Group} group,我会在@namespace上获得intellisense

enter image description here

1 个答案:

答案 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。