【问题标题】:VSCode not showing proper params in objectVSCode没有在对象中显示正确的参数
【发布时间】:2017-07-26 22:37:02
【问题描述】:

我已经像这样对我的函数进行了 jsdoc:

/**
 * @typedef {Object} SearchTerms
 * @property {string} what
 * @property {string} where
 * @property {boolean} online
 */

/**
 * From react-router params, which are URL encoded, it figures out the "what", "where", and "online" terms.
 *
 * @export
 * @param {Object} params The `params` field from react-router component props.
 * @param {string} [params.what="Everything"] The subject of users search.
 * @param {string} [params.where] The location of users search.
 * @returns {SearchTerms}
 */
export function getSearchTerms(params)  {

但是params 键在函数悬停时没有正确展开:

无论如何它可以正确扩展params 参数吗?我希望它显示出来:

除了它还应该用问号表明它是可选的。当我输入参数时,它应该显示该参数的描述,如下所示:

【问题讨论】:

    标签: visual-studio-code jsdoc


    【解决方案1】:

    问题是您已将params 参数的类型指定为Object。你应该将你的参数作为第二个@typedef

    /**
     * @typedef SearchOptions
     * @property {String} [what="Everything"] The thing
     * @property {String} [where] A place
     */
    
    /**
     * @param {SearchOptions} params
     */
    function getSearchTerms(params){ ... }
    

    使用这样的命名接口,VSCode 应该像您正在寻找的那样在 Intellisense 中显示参数。

    【讨论】:

    • 我记得几个月前读过这篇文章,我相信您使用的语法(点分隔的子参数名称)在技术上是有效的 JSDoc,但填充 Intellisense 的 Typescript 解析器不支持。我不喜欢为每个“opts”参数编一个类型名称,但它可以完成工作。
    • 我非常同意你的观点,我不想为每个 opts arg 输入定义。非常感谢先生解释它在 vscode 中的解析器。
    • 好像也不行。正如here 所见,SearchOptions 仍然没有得到扩展。有什么想法吗?
    • 我看到了混乱。在 OP 中,他们将选项对象作为参数(我称为 SearchOptions),并返回他们称为 SearchTerms 的结果对象。我的回答没有显示返回类型,只显示参数(选项)类型。所以 Intellisense 会显示选项对象的自动完成,但函数的隐含返回类型是any,所以你不会在那里得到任何自动完成。
    • 澄清一下:粘贴我答案中的代码,然后输入getSearchTerms({}),将光标放在大括号之间,然后触发自动完成(CTRL+Space)。您应该看到 whatwhere 以及它们的描述。现在,在 close-paren 之后添加一个句点并触发自动完成;您应该看到所有全局标识符,但没有特定的属性提示,因为返回类型是 any
    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2020-04-25
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多