reactjs - React och Typescript: Argument av typ kan inte tilldelas till parameter av typen 'EventListenerOrEventListenerObject'


Jag försöker lägga till Typescript i mitt React-projekt:

componentDidMount() {
  document.addEventListener('mousemove', this.handleMouseMove);
}

private handleMouseMove = (e: React.MouseEvent<HTMLElement>) => {
  appStore.updateSideWidth(e.pageX);
}

Men jag fick följande fel under this.handleMouseMove:

[ts]
Argument of type '(e: MouseEvent<HTMLElement>) => void' is not assignable to parameter of type 'EventListenerOrEventListenerObject'.
Type '(e: MouseEvent<HTMLElement>) => void' is not assignable to type 
'EventListenerObject'.
Property 'handleEvent' is missing in type '(e: MouseEvent<HTMLElement>) 
=> void'.

Jag försökte:

1) @ts-ignore det fungerar men jag är tveksam till att göra det eftersom det är därför jag använder Typescript 2) Använd något som:

private handleMouseMove = (e: Event) => {
  appStore.updateSideWidth((e as React.MouseEvent<HTMLElement>).pageX);
}

Men fick ett fel som säger att det inte går att konvertera Event till MouseEvent-typ på grund av bristen på altKey.

Tack för hjälpen!

Svar #1

Händelsen e kommer inte att vara en React-händelse eftersom du lägger till en händelselyssnare på document. Så typen av e kommer bara att vara MouseEvent.

försök :

componentDidMount() {
  document.addEventListener('mousemove', this.handleMouseMove);
}

private handleMouseMove = (e: MouseEvent) => {
  appStore.updateSideWidth(e.pageX);
}