我正在尝试编译我的程序,该程序在图像上有一个click事件监听器,我正在检查是否发生了某个特定元素或其他元素上的点击。
function(e){
var img_wrapper = goog.dom.getElementsByClass('imgWrapper');
if (img_wrapper.length > 0 && goog.dom.findCommonAncestor(e.target, img_wrapper[0]) === img_wrapper[0]){
return;
}
}
编译时,我收到此错误:
flickr_closure.js:226: WARNING - actual parameter 1 of goog.dom.findCommonAncestor does not match formal parameter
found : (EventTarget|null)
required: (Node|null|undefined)
if (img_wrapper.length > 0 && goog.dom.findCommonAncestor(e.target, img_wrapper[0]) === img_wrapper[0]){
^
0 error(s), 1 warning(s), 97.0% typed
代码就像我想要的那样工作,但我仍然得到了警告,因为这是为了学校作业,其中一个要求就是我在编译时不会有警告。
我尝试为e.target
添加一些基本类型信息,试图告诉编译器将其视为一个节点,但它也抱怨这一点。
答案 0 :(得分:3)
使用所谓的type-casting:
/** @type {Node} */ (e.target)
e.g。
goog.dom.findCommonAncestor(/** @type {Node} */ (e.target), img_wrapper[0])
答案 1 :(得分:2)
扩展Alex's answer,最好在实际检查变量后进行输入。
if(goog.dom.isElement(e.target)) {
.... /** @type {!Element} */ (e.target) ....
}