javascript - Tipul 'void' nu poate fi atribuit tipului '((event: ChangeEvent) => void) React TypeScript


Sunt începător în React TypeScript și am definit niște props într-un fișier .JS pe care vreau să le folosesc într-un fișier .tsx. dar primesc această eroare pe una dintre liniile mele TypeScript:

 <MyTextField style={{width:'60%'}}  name='ActivationDate' type='date' defaultValue={values1.ActivationDate} onChange={handleChange('ActivationDate')}/>
Type 'void' is not assignable to type '((event: ChangeEvent<HTMLInputElement>) => void) | ((event: ChangeEvent<HTMLSelectElement>) => void) | ((event: ChangeEvent<HTMLTextAreaElement>) => void) | undefined'.

CodeSandbox conține atât fișierul meu JS, cât și fișierul meu TSX: https://codesandbox.io/s/tsx-rj694

care pare să fie problema și cum pot să scriu asta corect?

Răspuns #1

Presupun că nu transmiteți obiectul eveniment în metoda handleChange.

Așa ar trebui să modificați handler-ul evenimentului onChange:

onChange={() => handleChange('ActivationDate')}

Pentru informarea dumneavoastră, dacă trebuie să accesați obiectul eveniment în apelul onChange, va trebui să specificați explicit tipurile corecte.

onChange={handleChange}

Și când definești funcția,

const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
  // do the rest here
}

Răspunsul #2

onChange={(e: React.ChangeEvent<HTMLInputElement>): void => handleChange(e.target.value)}