函数返回类型与 TypeScript 不匹配

Adr*_*ien 6 typescript reactjs

我无法理解。我熟悉 TypeScript,并且我正在尝试尽可能地坚持它的建议,但这对我来说毫无意义。

了解 TypeScript 如何讲述返回类型的问题

阅读提示后,我看到了类型的定义EffectCallback,其中包括:

type EffectCallback = (() => void)
Run Code Online (Sandbox Code Playgroud)

只是为了看看它是否有任何区别,我直接放置了类型的定义,正如您所看到的,它不再触发 TypeScript。

在此输入图像描述

我缺少什么?

另一件事是,根据 TypeScript 告诉我的,useEffect需要一个EffectCallback,它最多是一个void作为参数返回的函数。

TypeScript 告诉我们 <code>useEffect</code> 需要一个 EffectCallback

问题是,根据React 文档useEffect,我可以传递一个返回函数的函数。React 使用此函数进行清理。

我的直觉告诉我,有一件小事我无法掌握,否则我就无法弄清楚这一点!

Nic*_*wer 7

在您的第一个代码示例中,您有:

(): EffectCallback => {
Run Code Online (Sandbox Code Playgroud)

这意味着这是一个返回EffectCallback. 然而,这并不是我们useEffect所期待的。该函数必须是一个EffectCallback而不是返回一个。AnEffectCallback要么是不返回任何内容的函数,要么是返回拆卸函数的函数。

在第二个示例中,您将继续:

(): (() => void) => {
Run Code Online (Sandbox Code Playgroud)

现在你说它是一个返回拆卸函数的函数。返回拆卸函数的函数是执行 EffectCallback 的合法方法之一,因此它匹配。


除非您使用需要显式返回类型的 lint 规则,否则我不会费心使用useEffect. 这样做更简单() => {,如果您编写的代码返回了非法的内容useEffect,打字稿会指出这一点。