javascript - Rxjs v6.x 上的类型 'clientX' .ts(2339) 上不存在属性 'Event'

标签 javascript typescript rxjs mouseevent typeerror

我正在尝试使用 rxjs 来处理当 clientY 大于 200px 时第一次单击文档的问题。

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

enter image description here

所以我尝试在参数中将事件类型设置为 MouseEvent,例如:

(event: MouseEvent)=> ({})

但它给了我另一个错误,似乎问题出在 rxjs 上,它无法检测到单击事件与简单事件不同;

enter image description here

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

更新:原因和答案:

enter image description here

感谢@Prince

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

因此,我们应该告诉它将事件转换为已发生的事件(在本例中是 MouseEvent),这样它就可以按照我们想要的方式工作,就像我们对 html 输入类型所做的那样,以防止使用值时出现类型错误:

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

最佳答案

您可以使用运算符(fromEvent、pluck、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 链接:https://stackblitz.com/edit/rxjs-ccrz9x

关于javascript - Rxjs v6.x 上的类型 'clientX' .ts(2339) 上不存在属性 'Event',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61151823/

相关文章:

javascript - 选择javascript正则表达式中的任何符号

javascript - JSON 数组未在 Google map 中获取

javascript - 在 TypeScript 中使用 "is"关键字有什么好处?

angular - 用于可观察链接的仓促 forkjoin 替代 rxjs?

c# - 在这种情况下如何进行ajax?

javascript - 使用 Electron 的 native 拖放文件 uploader

angular - import * as angular from 'angular' inside app.module.ts 文件

javascript - Angular 2 D3 树渲染不正确

javascript - 按顺序订阅所有可观察量,然后在所有完成后将值作为数组发出

angular - ngx-datatable 在 [rows] ="rows | async"的情况下无法重新分配行模型