Я заметил сегодня, работая над очень маленьким файлом JS, что мой определенный тип не разрешал intellisense, когда переменная была позже объявлена как принадлежащая к этому типу.Оказывается, что изменение 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
})();