Dlaczego „MouseEvent” w programie obsługi zdarzeń pola wyboru nie jest ogólne?

92

Mam element checkbox TSX (JSX):

<input type="checkbox" name={i.toString()} onClick={this.handleCheckboxClick} />

Z pomocą kodu VS wiem, że typ parametru wejściowego this.handleCheckboxClickto MouseEvent<HTMLInputElement>. Więc zaimplementowałem to z:

private handleCheckboxClick(event: MouseEvent<HTMLInputElement>) {
    ...
}

Następnie [ts] Type 'MouseEvent' is not generic.pojawia się błąd mówiący, jak pokazano na poniższym obrazku:

wprowadź opis obrazu tutaj

Wersja moich pakietów:

"@types/react": "^15.0.29",
"@types/react-dom": "^15.5.0",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"typescript": "^2.3.4",

Dlaczego?

Ben
źródło

Odpowiedzi:

248

Prawdopodobnie używasz DOM MouseEvent. Spróbuj użyć React.MouseEvent<HTMLInputElement>zamiast tego.

rossipedia
źródło
2
Nie działa dla mnie, otrzymuję:type: "checkbox" onChange: (e: MouseEvent<HTMLInputElement>) => void; defaultChec...' is not assignable to type 'InputHTMLAttributes<HTMLInputElement>'
Kokodoko
@Kokodoko czy kiedykolwiek to naprawiłeś?
SuperUberDuper
6

Aby skorzystać z React MouseEvent, po prostu dodaj:

import { MouseEvent } from 'react';

Guy Engel
źródło
3

Możesz użyć SyntheticEvent zamiast MouseEvent

Sras
źródło