【问题标题】:`Rest parameters JSDOC` is not correctly flagged in vscode`Rest parameters JSDOC` 在 vscode 中未正确标记
【发布时间】:2021-11-23 21:04:26
【问题描述】:

我的代码是否有问题导致vscode 没有正确的提示?

/**
 *
 * @param  {...Object} elementList
 * @param  {string} elementList[].type
 */
function add(...elementList) {
    // vscode tip: elementList is (parameter) elementList: any[]
    // expect: elementList is {type: string;}[]
    elementList.map(e => e)
}

// use
add({ type: 'div' }, { type: 'h1' })

【问题讨论】:

  • 是的,你实际上不能定义这样的参数的属性类型 (elementList[].type)。据我所知,在 C 风格的语言(Java、JavaScript/TypeScript、C# 等)中,属性总是在其父声明中定义,例如type ElementList = { type: string }。点符号仅用于设置/获取,而不用于声明。

标签: visual-studio-code vscode-settings jsdoc jsdoc3


【解决方案1】:

你想要@param {type} parameterName的格式,例如

/**
 * @param {{type: string}[]} elementList
 */
function add(...elementList) {
    elementList.map(e => e)
//  ^^^^^^^^^^^ (parameter) elementList: {type: string}[]
}

或者,您可以使用 JSDoc 创建可重用的类型定义:

// Define an Object type named MyElement with one property (type) of type string.
/**
 * @typedef {Object} MyElement
 * @property {string} type
 */

/**
 * @param {MyElement[]} elementList
 */
function add(...elementList) {
    elementList.map(e => e)
//  ^^^^^^^^^^^ (parameter) elementList: MyElement[]
}

【讨论】:

  • 虽然代码将允许vscode 获得正确的提示,但jsdoc 无法识别此语法。运行 `jsdoc ./index.js ` 时发生错误。 Jsdoc 无法帮我生成文档
  • 错误:ERROR: Unable to parse a tag's type expression for source file C:\Users\59426\Desktop\quickly-desktop\r\test.js in line 1 with tag title "param" and text "{{type: string}[]} elementList": Invalid type expression ...
  • @user15163984 我可以验证我的示例是否适用于 vscode 支持的 jsdoc 版本。我添加了一个替代方法来尝试,但首先要仔细检查您的语法,因为第一个示例应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 2021-02-15
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多