如何在 TypeScript 中将函数类型声明为参数

roc*_*n_d 2 javascript syntax typescript reactjs

我在 React 中有一个 setState 函数,我想将它作为参数传递给另一个函数。我想知道如何在 TypeScript 中定义它而不使用“any”作为类型:

到目前为止它看起来像这样:

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

T.J*_*der 5

的类型的阵营从状态设定器useStateIS React.Dispatch<React.SetStateAction<stateType>>。在您的情况下,状态类型看起来是boolean,因此:

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

您可以在index.d.ts@types/react或在一个不错的 IDE(例如 VSCode)中看到它,您可以通过将鼠标悬停在状态设置器上来看到它:

使用 const setShowCalendar 显示弹出窗口的状态设置器上的光标:React.Dispatch<React.SetStateAction<boolean>>

在 VSCode 中,将鼠标悬停在上面会setShowCalendar显示此弹出窗口:

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