更新打字稿版本时react useState挂钩上的打字稿错误

时间:2020-09-17 04:47:51

标签: javascript reactjs typescript react-hooks use-state

我开发了带有react 16.9和typescript 3.5.2的react typescript应用程序。 它使用类似的反应状态挂钩

const [hValue, setHValue] = useState();
hValue

类型是IValue

因此setHValue的返回类型为React.Dispatch<any>

然后,我将打字稿版本更新为3.9.7,并给出了编译错误,看来现在setHValue的返回类型已更改为React.Dispatch<React.SetStateAction<undefined>>

那是为什么?以及如何解决此问题?

1 个答案:

答案 0 :(得分:2)

让我们看看useState

的类型
    function useState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];

也就是说,如果您未指定任何S,则默认为undefined

因此,您需要指定您的初始类型,例如,如果hValuenumber,则可以

const [hValue, setHValue] = useState<number>();

这样,setValue将是React.Dispatch<SetStateAction<number>>类型