首页 > 解决方案 > JSDoc Type 属性作为函数参数无效

问题描述

我正在开发一个 javascript 项目(使用 VSCode),我们使用JSDoceslint 规则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的,它不太明确,有时(对于更复杂的对象)可能会很麻烦。

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

标签: javascriptvisual-studio-codeeslintjsdoc

解决方案


尝试这个

/**
 * @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
}

推荐阅读