VS代码@typedef大写

时间:2018-11-21 19:30:29

标签: visual-studio-code jsdoc

我今天在处理一个非常小的JS文件时注意到,当稍后将变量声明为该类型时,我定义的类型不允许智能感知。原来,将typedef更改为大写字母可以解决此问题。我的类型定义在文件的顶部,并且该类型的变量在IIFE中。

如果我将类型定义移到IIFE内,则不管类型名称如何都可以使用。但是,将类型定义保留在文件的顶部(IIFE之外)并使用大写的名称也可以使它起作用。

在大写的类型定义使其成为全局的任何地方都有记录吗?

编辑:添加几个屏幕截图。用简单的例子来复制似乎是零星的。

Non-working
Working

EDIT_2::这似乎与拥有与类型定义名称完全相同的变量有关。

/**
 * An object that stores all the necessary contextual data
 * Defined inside the HTML file loaded for the alert
 * @typedef {Object} Test
 * @prop {Number} personId person_id of the patient
 */

(function() {
    /** @type {Test} */
    const Test = window.Test;
    Test
})();

1 个答案:

答案 0 :(得分:0)

您应该将@typedef视为一个变量-仅在类型声明中可用。

这意味着您可以在本地范围内覆盖该变量,以便在那里有其他含义。

这就是您在这里所做的。