2014-01-12 1 views
1

.apply을 param 콜백으로 사용하면 WARNING - could not determine the type of this expression이 표시됩니다. 내가 그것을 모범이되게 하소서. 이 코드가 내 코드에서클로저 컴파일러 : 콜백에서이 표현식의 유형을 확인할 수 없습니다.

/** 
* @param {function(... [*])} callback 
* @param {string} name 
*/ 
function call(callback, name) { 
    return callback.apply(null, [name]); 
    //  ^- error here. 
} 

을, 나는 PARAM에 callback 세트 .apply을 필요로하고 반환 것을 얻을. 하지만 Closure Compiler는 오류가 발생합니다. java -jar compiler.jar --js test.js --js_output_file test.min.js --warning_level VERBOSE --jscom_warning reportUnknownTypes으로 실행해야합니다. 나는 모든 알 수없는 유형의 경고 강제

참고하지만, callback 유형 function(... [*])이며, 올바르게 .apply 방법이 (때문에 당신의 유형 CC에 내부적으로 정의). 코드를 실행하면 브라우저에서 완벽하게 작동합니다.

클로저 컴파일러 버그 일 수 있습니까? 내가

  • @param {*} callback 시도

    것들 : 오류;

  • @param {function(*)} callback : 오류;
  • return /** @type {function(... [*])} */ (callback).apply(null, [name]); : 오류;
  • return (/** @type {function(... [*])} */ (callback)).apply(null, [name]); : 오류;

답변

0

Concavel에 따르면, 당신이 좋아하는 콜백 반환을 지정할 필요가 콜백 @param에 폐쇄 컴파일러 이슈 트래커에서 issue #1191에 :

/** @param {function(*): number} callback */ 

그것은 정말 문제를 해결.