Теперь я понял.
Спецификация @type
должна быть прямо перед объявлением функции!
В данном случае это означает внутри список параметров обработчика событий, например:
window.addEventListener("message", /**@type function(SvarEvent)*/ function (event)
{
event.data. <= Here I want to list 'knapId' and 'html'
});
Теперь он работает, когда я набираю 'event.data.
', я получаю список: 'knapId
' и 'html
' .
Обновление: (что я в итоге сделал)
Вместо того, чтобы определять целый новый класс в javascript для MessageEvent
(который я бы никогда не создал в любом случае), я закончил тем, что определил новый объект только в JsDoc comments
для свойства data
:
/**
* @typedef {object} MessageData
* @property {string} knapId
* @property {string} html
*/
и, используя ES2015 destructuring
, теперь я могу сделать это:
window.addEventListener("message", function (event)
{
/**
* @type {MessageData}
*/
let { knapId, html } = event.data;
});
Теперь у меня есть полное intellisense
, и я могу легко получить доступ к свойствам data
объектов как переменным способом typesafe
.