Google闭包编译器将类型从EventTarget强制转换为Node
Google Closure Compiler coerce type from EventTarget to Node
我正试图编译我的程序,该程序在图像上有一个点击事件侦听器,我正试图检查点击是发生在特定元素上还是其他元素上。
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
添加一些基本类型信息,试图告诉编译器将其视为Node,但它也对此表示不满。
使用所谓的类型转换:
/** @type {Node} */ (e.target)
例如
goog.dom.findCommonAncestor(/** @type {Node} */ (e.target), img_wrapper[0])
根据Alex的回答,在实际检查变量后键入cast是一种很好的做法。
if(goog.dom.isElement(e.target)) {
.... /** @type {!Element} */ (e.target) ....
}
相关文章:
- 将PHP mcrypt()调用转换为node's mcrypt
- 将数组键转换为数字node.js
- node.js将字符串转换为要上传到Web服务器的文件
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 如何在将Node异步函数转换为promise时使用Q库
- 在javascript中将字符串转换为Node元素
- 如何将本地文件路径转换为文件::?/url在node.js中的安全性
- 如何使用Node.js将字节数组转换为字符串
- 使用node.js将多维数组转换为JSON
- 将json数组转换为node.jsexpress.js中的var值
- 使用 Node.js 将文件系统中的目录结构转换为 JSON
- 将 ajax 转换为 node.js
- Node.JS/Javascript - 将字符串转换为整数正在返回 NaN,而我不希望它这样做
- 使用GraphicsMagick和Node.js将多个图像转换为多页pdf文件
- 如何在Node.js / Express / MongoDB应用程序中将Markdown转换为HTML
- 如何将缓冲区对象转换为 Node.js 中的文件
- 了解 Node.js 中的简单流转换
- 如何确认img文件的副本,转换完成,使用node.js
- 转换node.js HTTP响应函数(使用"request"库)来使用流
- 如何转换node.js的结果以防止ember.js错误:没有找到'0 '的模型