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>>
