为什么 VS Code 对于数组项 props 显示错误的 JSDoc?

Fer*_*Paz 5 javascript jsdoc visual-studio-code

VS Code 上的 JSDoc 将 props 显示为对象而不是数组。

在此输入图像描述

您可以通过将鼠标悬停在此codesanbox 片段中的函数名称上来自行测试。

根据JSDoc 文档,它应该能够记录:

  • 通过对象解构得到的 prop 值:@param {string} employee.name
  • 数组项道具,如下所示:@param {string} employees[].name

我也找不到有关VS Code 文档上的 JSDoc 支持的任何限制。

这会是 VS Code、JSDoc 或我记录 JavaScript 函数的方式的问题吗?

注意:我知道有一个解决方法,@typedef如下所示,但我更感兴趣的是了解为什么文档不能按我的预期工作。

/**
 * A standard user
 * @typedef {Object} User
 * @property {number} id - The unique ID for the user.
 * @property {string} name - The user name.
 */

/**
 * Foo bar.
 * @param {Object} props - The props.
 * @param {User[]} props.users - A list of users.
 */
function foo(props) {

}
Run Code Online (Sandbox Code Playgroud)

cus*_*der 3

我不太确定为什么这个[]符号没有被正确识别。我找到了这个替代方案(不求助于@typedef),它似乎接近您想要的:

/**
 * Foo bar.
 * @param {Object} props - The props.
 * @param {Array<{id:number, name:string}>} props.users - A list of users.
 */
function foo(props) {

}
Run Code Online (Sandbox Code Playgroud)

JSDoc 支持 Closure Compiler 定义数组和对象类型的语法。

因此,我们可以使用Array<>和记录此处定义的符号: https:
//github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System

几张截图:

我承认 VS Code 看起来并不理解该符号:

在此输入图像描述

然而,当您开始访问props.users元素时,它看起来更好:

在此输入图像描述