javascript - 如何将@typedef 记录为@memberof a @namespace

标签 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;

现在,我想定义一个接收 GroupInstance 作为 prop 的 React 组件

enter image description here

我希望在该智能感知下拉列表中看到成员,但没有看到。

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

enter image description here

最佳答案

@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
*/

方案二是省略@name@memberOf,在@typedef中定义数据类型的完整路径 - https://jsdoc.app/tags-typedef.html 选项 2 示例

/**
 * Your description goes here.
 * @typedef {Object} module:your/module.yourTypedefName
 */

此外,您还可以将@type 和类型一起放在单独的行中,然后对于选项 1,带有 @typedef 的行将只包含 @typedef。

关于javascript - 如何将@typedef 记录为@memberof a @namespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49600102/

相关文章:

javascript - 如何在 JSDOC 中记录对象数组

javascript - 使用javascript从localhost网站播放声音

javascript - 如果我不知道 Selenium 中的 ID 是什么,如何单击已生成 ID 的元素

visual-studio-code - Visual Studio 代码 : 'Ctrl +P' missing git?

java - 如何解析 JSDoc

javascript - VSCode : How can I make Intellisense work with a vanilla Javascript project?

javascript - 如何在javascript中画一条线?什么是 Swing/Awt?我需要下载它们吗?

java - 在基本 AJAX(如 HTTP 轮询)和反向 AJAX(如长轮询)之间进行选择时应考虑哪些因素?

powershell - 将 "Visual Studio code"与交互式 Powershell 窗口(如 Powershell ISE)结合使用

node.js - 如何在 Visual Studio 代码调试器上指定 $HOME 文件夹