打字稿错误:类型 'EventTarget' 上不存在属性'remove'



我收到错误类型错误:类型"事件目标"上不存在属性"删除"。

<img onError={function(e) {
                    e.target.remove();
                }} src="../me.jpg" alt=""/>

解决方案

替换此内容:

<img onError={event => event.target.remove()}

有了这个:

<img onError={event => event.currentTarget.remove()}

解释

从中调度事件的元素 (<img /> ) 是自包含的,本身不能有任何子元素。同时,事件处理程序直接在同一节点上定义。这意味着发出事件的节点也是捕获该事件的节点。换句话说,event.target将与event.currentTarget相同。

这两者具有不同的类型定义。前者被定义为只是EvenTarget而后者更具体EventTarget & HTMLImageElement。这就是为什么event.currentTarget配备了remove()方法,并且您不需要任何额外的类型防护装置。

所以显然我必须在 Typescript 允许我使用 .remove 之前检查 e.target 是否是 HTML 元素,尽管很明显它会是,所以似乎没有很好地利用时间来检查它。

if (e.target instanceof HTMLElement) {
                    e.target.remove();
                }

最新更新