클로저 컴파일러로 소스를 컴파일하고 네트워크에서 이벤트 객체가있는 함수를 호출하면 애플리케이션에서 콘솔에 오류가 발생합니다. 라는클로저 컴파일러 externs 문제를 해결하지만 왜 이해하지 못했습니까?
기능은 다음과 같습니다
/**
* @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
선언을 가지고 있고 xterns.NOTUSEDNAME
에 대한 extern은 컴파일러 문제를 해결합니다 ... 왜 이런 일이 일어날 지 설명 할 수 있습니까?