Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 财产';clientX';不存在于类型';事件';。RxJSV6.x上的ts(2339)_Javascript_Typescript_Rxjs_Mouseevent_Typeerror - Fatal编程技术网

Javascript 财产';clientX';不存在于类型';事件';。RxJSV6.x上的ts(2339)

Javascript 财产';clientX';不存在于类型';事件';。RxJSV6.x上的ts(2339),javascript,typescript,rxjs,mouseevent,typeerror,Javascript,Typescript,Rxjs,Mouseevent,Typeerror,我试图使用rxjs来处理一个问题,当文档的clientY大于200px时,它会第一次点击文档 问题是,typescript告诉我clientX不是事件类型。您可以在下面看到: 因此,我尝试在参数中将事件类型设置为MouseEvent,如下所示: (event: MouseEvent)=> ({}) 但它给了我另一个错误,似乎问题在于rxjs无法检测点击事件,与简单事件不同 解决这个奇怪问题的最佳解决方案是什么 更新:原因和答案: 感谢@Prince 我发现,fromEvent只发出

我试图使用rxjs来处理一个问题,当文档的clientY大于200px时,它会第一次点击文档

问题是,typescript告诉我clientX不是事件类型。您可以在下面看到:

因此,我尝试在参数中将事件类型设置为MouseEvent,如下所示:

(event: MouseEvent)=> ({})
但它给了我另一个错误,似乎问题在于rxjs无法检测点击事件,与简单事件不同

解决这个奇怪问题的最佳解决方案是什么

更新:原因和答案:

感谢@Prince

我发现,fromEvent只发出“事件类型”,这意味着它可以告诉我们我得到了一个事件

因此,我们应该告诉它将事件转换为曾经发生过的事件(在本例中为MouseeEvent),这样它就可以按照我们的意愿工作,就像我们处理html输入类型一样,以防止在使用值时出现类型错误:

const search_elm = document.getElementById("search")! as HTMLInputElement;
search_elm.value="10";

您可以使用操作符(fromEvent、Pull、filter、first)实现这一点,如下所示。请查找内联描述

const source = fromEvent(document, 'click')
.pipe(
  map(event => {
    const e = event as MouseEvent;
    return {x: e.clientX, y:e.clientY};
    }),
  filter((obj) => obj.y > 200),
  first(),
);

source.subscribe(x => console.log(x));

下面是stackblitz链接:

谢谢您的回答,但您的解决方案并不是针对我提到的问题。此外,我们无法在您的解决方案中访问clientX,因为存在Pull(“clientY”)。因此,您稍后需要clientX和clientY??我已根据您的要求更新了我的答案,如果我遗漏了任何内容,请告诉我。