【问题标题】:JSDoc Type property as function parameter is not validJSDoc Type 属性作为函数参数无效
【发布时间】:2021-04-19 04:43:55
【问题描述】:

我正在开发一个 javascript 项目(使用 VSCode),我们使用 JSDoc 和 eslint 规则 valid-jsdoc。 我有一个具有一些属性的对象类型,例如:

/**
 * @typedef {Object} Project
 * @property {string} id
 * @property {string} name
 */

在代码中我可以使用Project['id'] ex:

/**
 * @param {Project['id']} projectId
 */
function myFunction(projectId) {}

它识别Project['id'] 类型,并在我将其悬停时指示它是string

我想强迫大家写JSDoc,所以想用eslint规则valid-jsdoc。但是,该规则不知道类型 Project['id'] 并突出显示带有错误的 jsdoc

JSDoc syntax error

如果我使用它不会显示任何错误

/**
 * @param {Project} project
 */
function myFunction(project) {}

/**
 * @param {string} projectId
 */
function myFunction(projectId) {}

我觉得很遗憾不能使用Project['id'],而是使用string,因为这条规则,它不太明确,有时(对于更复杂的对象)可能会很麻烦。

有没有办法实现我想要做的事情?

【问题讨论】:

  • @param {Project.id} projectId 可以代替吗?
  • 我试过了,但这甚至不被 JSDoc 接受:/

标签: javascript visual-studio-code eslint jsdoc


【解决方案1】:

试试这个

/**
 * @typedef {Object} Project - A new project
 * @property {String} id - The Project id
 * @property {String} name - The Project name
 */

您现在可以像下面那样使用它

/**
 * @param {Project} project
 */
function myFunction(project) { 
    var id = project.id // hover over this
}

【讨论】:

  • 您好,这不是我要找的,我想在 JSDoc 中指出我的函数将Project['id'] 作为参数(而不是Projectstring)跨度>
  • 嗯,我不知道 jsdoc 是否有这样的语法,但值得尝试和研究
  • 我认为您对我的问题的理解存在混淆。 JSDoc已经有了语法,可以写Project['id']。然而,用于强制人们编写 JSDoc 的 eslint 规则 valid-jsdoc 不支持这种语法并将其突出显示为 JSDoc syntax error (但无法解析有效的 JSDoc 是规则中的错误)
  • 现在我得到了你的问题,为什么不直接使用没有 eslint 东西的普通 JSDoc
  • 正如我在问题中所写的,它是强迫人们编写正确的JSDoc
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多