gpt4 book ai didi

reactjs - 函数返回类型与 TypeScript 不匹配

转载 作者:行者123 更新时间:2023-12-04 01:24:48 25 4
gpt4 key购买 nike

我无法理解。我知道 TypeScript,我试图尽可能地坚持它的建议,但这对我来说毫无意义。

See how TypeScript tells about an issue with the return type

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

type EffectCallback = (() => void)

只是为了看看它是否有什么不同,我直接放置了类型的定义,如您所见,它不再触发 TypeScript。

enter image description here

我错过了什么?

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

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

事情是,根据 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com