Я компилирую свой исходный код с помощью компилятора закрытия, и когда я вызываю функцию, которая получила объект события из сети, приложение выдает ошибку в консоли.
Вызывается функция:
/**
* @param {goog.events.Event} event Socket.io-Wrapper Event.
*/
de.my.app.admin.prototype.onSaved = function(event){
var category = event.data[0].category; //<-- here it throws the error because category get compiled.
var id = event.data[0].id;
var oldid = event.data[0].oldid;
[...]
}
объект события выглядит так
{ data:{
0: {
category: 'someString',
id: 5,
oldid: -5
} }
[...someMoreValuesAddedBySocketIO...]
}
это то поведение, которое я ожидал.
теперь я добавляю подобное объявление externs в свой файл externs, но я не менял объявление типа @param
в функции, и ошибка исчезает:
var xterns;
/**
* @typedef {{
* category : string,
* oldid : number,
* id : number
* }}
*/
xterns.NOTUSEDNAME;
/**
* @type {string}
*/
xterns.NOTUSEDNAME.prototype.category;
/**
* @type {number}
*/
xterns.NOTUSEDNAME.prototype.oldid;
/**
* @type {number}
*/
xterns.NOTUSEDNAME.prototype.id;
Вкратце: у меня есть объявление @param {goog.events.Event} event
, а extern для xterns.NOTUSEDNAME
решает проблемы с компилятором... Кто-нибудь может объяснить, почему это происходит?