我无法理解。我知道 TypeScript,我试图尽可能地坚持它的建议,但这对我来说毫无意义。
阅读提示,我看到了类型 EffectCallback
的定义其中包括:
type EffectCallback = (() => void)
只是为了看看它是否有什么不同,我直接放置了类型的定义,如您所见,它不再触发 TypeScript。
我错过了什么?
另一件事是,根据 TypeScript 告诉我的,
useEffect
期待 EffectCallback
,这充其量是一个返回 void
的函数作为参数。事情是,根据React documentation about
useEffect
,我可以传递一个返回函数的函数。 React 使用此函数进行清理。我的胆量告诉我,有一件小事我无法理解,否则我就可以弄清楚这一点! 😅
最佳答案
在你的第一个代码示例中,你有这个:
(): EffectCallback => {
这意味着这是一个返回
EffectCallback
的函数。 .然而,这不是什么useEffect
正在期待。该功能需要是 EffectCallback
,一不回。安 EffectCallback
要么是一个不返回任何内容的函数,要么是一个返回一个拆卸函数的函数。在你的第二个例子中,你继续这个:
(): (() => void) => {
现在你说它是一个返回拆卸函数的函数。并且返回拆卸函数的函数是执行 EffectCallback 的合法方法之一,因此它匹配。
除非您使用需要显式返回类型的 lint 规则,否则我不会费心使用
useEffect
来做显式返回类型。 .做 () => {
更简单,并且如果您编写的代码返回的内容对 useEffect
来说是非法的, typescript 会指出这一点。
关于reactjs - 函数返回类型与 TypeScript 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62094968/