javascript - 根据 Grunt 的说法,JSDoc 不正确

标签 javascript gruntjs jsdoc

我的 grunt 任务 jsdoc 遇到了这个 jsdoc,它描述了一个对象文字数组:

/**
 * @type {{sku:string,
 *      stockColor:string,
 *      validTo:string,
 *      price:string,
 *      availableStock:string}[]} data
 *
 */
var variations = [];

来自 Grunt 的错误消息如下:

D:\dev\ngs-frontend>grunt jsdoc Running "jsdoc:dist" (jsdoc) task

ERROR: Unable to parse a tag's type expression for source file D:\dev\ngs-frontend\src\assets\js\modules\content\product-detail\hse-productdetails.js with tag title "type" and text "{{sku:string, stockColor:string,
validTo:string, price:string, availableStock:string}[]}": Invalid type expression "{sku:string, stockColor:string,
validTo:string, price:string, avail ableStock:string}[]": Expected "!", "=", "?", "|" or end of input but "[" found.

据我所知,JSDoc 对我来说是正确的。也许 grunt jsdoc 编译器有问题?

我正在定义一个对象文字数组。据我所知:

{{名称:值, name2:值2}[]}

这是描述这一点的正确方式。

最佳答案

这是 jsdoc 本身的一个错误/不支持的语法(用 jsdoc 3.4.0 尝试过),而不是 grunt。您可能应该向他们报告 https://github.com/jsdoc3/jsdoc/issues/ 上的错误

支持语法 @type { {a : String, b : Number} },但不支持 @type { {a : String, b : Number}[] }

您可以使用 @typedef 来解决这个问题,例如:

/**
 * @typedef { {
 *      sku:string,
 *      stockColor:string,
 *      validTo:string,
 *      price:string,
 *      availableStock:string }} variation
 */

/**
 * @type {variation[]} 
 */
var variations = [];

关于javascript - 根据 Grunt 的说法,JSDoc 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551289/

相关文章:

typescript - 如何在评论/JSDoc 中引用另一种 typescript 类型?

javascript - 对象数组的过滤函数

javascript - 函数和对象的原型(prototype)构造函数

javascript - 如何在 ReactJS 中查询字段值?

javascript - 将文件合并到 Webpack 的条目中

javascript - 我如何在 webstorm 中使用 JSDoc @param 回调处理程序的参数?

javascript - 从 Vue js 中发出的子组件方法中更改父属性

node.js - 构建 Knockout.js 时出现 fatal error

eclipse - Grunt 需要在系统路径中安装指南针警告

javascript - JSDoc - 如何检查 JavaScript 的类型