函数返回类型与TypeScript不匹配

问题描述 投票:0回答:1

我听不懂。我对TypeScript十分了解,并且我正尝试尽可能地坚持其建议,但这对我来说毫无意义。

See how TypeScript tells about an issue with the return type

阅读技巧,我看到类型EffectCallback的定义,其中包括:

type EffectCallback = (() => void)

仅查看它是否有区别,我直接放置了类型的definition,并且正如您所看到的,它不再触发TypeScript。

enter image description here

我想念什么?

还有另一件事,根据TypeScript告诉我的,useEffect期望一个EffectCallback,充其量是一个返回void作为参数的函数。

TypeScript tells us <code>useEffect</code> expecs an EffectCallback

事实是,根据React documentation about useEffect,我可以传递返回函数的函数。 React使用此功能进行清理。

我的胆量告诉我,有一件小事我无法理解,否则我将无法解决! 😅

reactjs typescript
1个回答
0
投票

在您的第一个代码示例中,您有以下内容:

useEffect

这意味着这是一个返回 EffectCallback的函数。但是,这不是useEffect所期望的。该函数需要be一个EffectCallback,而不返回一个。效果回调可以是不返回任何内容的函数,也可以是返回拆解函数的函数。

在第二个示例中,您继续进行以下操作:

(): EffectCallback => {

现在您是说这是一个返回拆解函数的函数。一个返回拆解函数的函数是执行EffectCallback的合法方法之一,因此它可以匹配。


除非您使用的是要求显式返回类型的lint规则,否则我不会都使用useEffect进行显式类型。仅执行(): (() => void) => { 更简单,并且如果您为useEffect所需的内容返回了错误,无论如何,打字稿会指出这一点。

© www.soinside.com 2019 - 2024. All rights reserved.