Свойство 'clientX' не существует для типа 'Event'.ts (2339) в Rx js v6.x - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь использовать rx js для решения проблемы, при которой первый клик по документу получается, когда его clientY превышает 200px.

проблема в том, что машинопись говорит мне, что clientX не в типе события. который вы можете увидеть ниже:

enter image description here

Поэтому я попытался установить тип события MouseEvent в параметре, например:

(event: MouseEvent)=> ({})

но это дало мне еще одну ошибку, которая, похоже, связана с rx js, который не может обнаружить событие щелчка, отличается от простого события;

enter image description here

Как лучше всего решить эту странную проблему?

Обновление: причина и ответ:

enter image description here

благодаря @ Prince

Я обнаружил, что fromEvent испускает только "тип события", что означает, что он может сообщить нам о том, что я получил событие.

Так что мы должны сказать это приведите событие к какому-либо событию, произошедшему (в данном примере это MouseEvent), чтобы оно могло работать так, как мы хотим, как мы делаем с html типами ввода, чтобы предотвратить ошибку типа при использовании значения:

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

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете достичь этого с помощью операторов (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

...