javascript - Hvordan man erklærer en funktionstype som en parameter i TypeScript


Jeg har en setState-funktion i React, som jeg gerne vil give videre til en anden funktion som en parameter. Jeg spekulerede på, hvordan jeg kan definere dette i TypeScript uden at bruge "any" som typen:

Indtil videre ser det sådan ud:

export const keyDownHandler = (
  event: React.KeyboardEvent,
  buttonDate: number,
  setShowCalendar: any
): void => {
  // stuff happening
  setShowCalendar(false);
};

Svar #1

Typen af en React state setter fra useState er React.Dispatch<React.SetStateAction<stateType>>. I dit tilfælde ser det ud til, at statustypen er boolean, så:

export const keyDownHandler = (event: React.KeyboardEvent, buttonDate: number, setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>): void => {
    // stuff happening
    setShowCalendar(false);
};

Du kan se dette i index.d.ts i @types/react, eller i en anstændig IDE (for eksempel VSCode), kan du se det ved at holde musen over state-setteren:

I VSCode vises denne popup, når du holder musen over setShowCalendar:

const setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>

Svar #2

Du kunne bruge typedeklarationen på denne måde.

setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>

Relaterede artikler