VS Code @typedef заглавные буквы - PullRequest
0 голосов
/ 21 ноября 2018

Я заметил сегодня, работая над очень маленьким файлом 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
})();

1 Ответ

0 голосов
/ 30 ноября 2018

Вы должны рассматривать @typedef как переменную, которую можно использовать только в ваших объявлениях типов.

Это означает, что вы можете переопределить эту переменную в своей локальной области видимости, чтобы она означала что-то еще.

И это именно то, что вы здесь делаете.

...