VS Code 上的 JSDoc 将 props 显示为对象而不是数组。
您可以通过将鼠标悬停在此 codesanbox snippet 中的函数名称上来自行测试。
根据JSDoc documentation,它应该能够记录:
@param {string} employee.name
@param {string} employees[].name
我也找不到关于 VS Code docs 上的 JSDoc 支持的任何限制。
这会是 VS Code、JSDoc 或我记录 JavaScript 函数的方式的问题吗?
注意:我知道有一个使用 @typedef
的解决方法,如下所示,但我更想知道为什么文档没有按我的预期工作。< /p>
/**
* 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) {
}
答案 0 :(得分:1)
我不太确定为什么 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<RestKitExample.xx0x600002d463e0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key token.'
符号没有被正确识别。我找到了这个替代方案(不诉诸[]
),它似乎与您想要的很接近:
@typedef
<块引用>
JSDoc 支持 Closure Compiler 的语法来定义数组和对象类型。
所以我们可以使用 /**
* Foo bar.
* @param {Object} props - The props.
* @param {Array<{id:number, name:string}>} props.users - A list of users.
*/
function foo(props) {
}
并记录如下定义的符号:
https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System
几个截图:
我承认这看起来不像 VS Code 确实理解那个符号:
但是,当您开始访问 Array<>
元素时,它看起来会更好: