如何在 TypeScript 中将函数类型声明为参数
How to declare a function type as a parameter in TypeScript
我在 React 中有一个 setState 函数,我想将其作为参数传递给另一个函数。我想知道如何在不使用“any”作为类型的情况下在 TypeScript 中定义它:
目前看起来是这样的:
export const keyDownHandler = (event: React.KeyboardEvent, buttonDate: number, setShowCalendar: any): void => {
// stuff happening
setShowCalendar(false)
}
您可以像这样使用类型定义。
setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>
我认为最简单的解决方案是 (b: boolean) => void
,但如果您想要完整类型,可以使用 React.Dispatch<React.SetStateAction<boolean>>
。
来自 useState
的 React 状态 setter 的类型是 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);
};
你可以在index.d.ts
中看到这个@types/react
,或者在一个体面的IDE(例如VSCode),你可以通过将鼠标悬停在上面看到它状态 setter:
在 VSCode 中,将鼠标悬停在 setShowCalendar
上会显示此弹出窗口:
const setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>
您可以为此使用函数类型。例如,一个接受布尔值且 returns 什么都没有的函数会是这样的:
const setShowCalendar = (value: boolean) => {
...
logic
...
}
setShowCalendar 的类型将是 let setShowCalendar: (value: boolean) => void;
除了缺少正文之外,该类型看起来几乎与函数本身相似。
查找您正在使用的类型并在上面的示例类型声明中替换它。
您可以在此处阅读更多相关信息:https://www.typescriptlang.org/docs/handbook/functions.html#function-types
我在 React 中有一个 setState 函数,我想将其作为参数传递给另一个函数。我想知道如何在不使用“any”作为类型的情况下在 TypeScript 中定义它:
目前看起来是这样的:
export const keyDownHandler = (event: React.KeyboardEvent, buttonDate: number, setShowCalendar: any): void => {
// stuff happening
setShowCalendar(false)
}
您可以像这样使用类型定义。
setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>
我认为最简单的解决方案是 (b: boolean) => void
,但如果您想要完整类型,可以使用 React.Dispatch<React.SetStateAction<boolean>>
。
来自 useState
的 React 状态 setter 的类型是 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);
};
你可以在index.d.ts
中看到这个@types/react
,或者在一个体面的IDE(例如VSCode),你可以通过将鼠标悬停在上面看到它状态 setter:
在 VSCode 中,将鼠标悬停在 setShowCalendar
上会显示此弹出窗口:
const setShowCalendar: React.Dispatch<React.SetStateAction<boolean>>
您可以为此使用函数类型。例如,一个接受布尔值且 returns 什么都没有的函数会是这样的:
const setShowCalendar = (value: boolean) => {
...
logic
...
}
setShowCalendar 的类型将是 let setShowCalendar: (value: boolean) => void;
除了缺少正文之外,该类型看起来几乎与函数本身相似。
查找您正在使用的类型并在上面的示例类型声明中替换它。
您可以在此处阅读更多相关信息:https://www.typescriptlang.org/docs/handbook/functions.html#function-types