我听不懂。我对TypeScript十分了解,并且我正尝试尽可能地坚持其建议,但这对我来说毫无意义。
阅读技巧,我看到类型EffectCallback
的定义,其中包括:
type EffectCallback = (() => void)
仅查看它是否有区别,我直接放置了类型的definition,并且正如您所看到的,它不再触发TypeScript。
我想念什么?
还有另一件事,根据TypeScript告诉我的,useEffect
期望一个EffectCallback
,充其量是一个返回void
作为参数的函数。
事实是,根据React documentation about useEffect
,我可以传递返回函数的函数。 React使用此功能进行清理。
我的胆量告诉我,有一件小事我无法理解,否则我将无法解决! 😅
在您的第一个代码示例中,您有以下内容:
useEffect
这意味着这是一个返回 EffectCallback的函数。但是,这不是useEffect所期望的。该函数需要be一个EffectCallback,而不返回一个。效果回调可以是不返回任何内容的函数,也可以是返回拆解函数的函数。
在第二个示例中,您继续进行以下操作:
(): EffectCallback => {
现在您是说这是一个返回拆解函数的函数。一个返回拆解函数的函数是执行EffectCallback的合法方法之一,因此它可以匹配。
除非您使用的是要求显式返回类型的lint规则,否则我不会都使用useEffect进行显式类型。仅执行(): (() => void) => {
更简单,并且如果您为useEffect所需的内容返回了错误,无论如何,打字稿会指出这一点。