我开发了带有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>>
那是为什么?以及如何解决此问题?
答案 0 :(得分:2)
让我们看看useState
function useState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];
也就是说,如果您未指定任何S
,则默认为undefined
。
因此,您需要指定您的初始类型,例如,如果hValue
是number
,则可以
const [hValue, setHValue] = useState<number>();
这样,setValue
将是React.Dispatch<SetStateAction<number>>
类型