我今天在处理一个非常小的JS文件时注意到,当稍后将变量声明为该类型时,我定义的类型不允许智能感知。原来,将typedef更改为大写字母可以解决此问题。我的类型定义在文件的顶部,并且该类型的变量在IIFE中。
如果我将类型定义移到IIFE内,则不管类型名称如何都可以使用。但是,将类型定义保留在文件的顶部(IIFE之外)并使用大写的名称也可以使它起作用。
在大写的类型定义使其成为全局的任何地方都有记录吗?
编辑:添加几个屏幕截图。用简单的例子来复制似乎是零星的。
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
})();
答案 0 :(得分:0)
您应该将@typedef
视为一个变量-仅在类型声明中可用。
这意味着您可以在本地范围内覆盖该变量,以便在那里有其他含义。
这就是您在这里所做的。