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

标签 reactjs typescript

我无法理解。我知道 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/

相关文章:

node.js - 深度嵌套 Express Router 中的 Socket.io

TypeScript tsc > 消息重定向

javascript - Angular 表单自定义验证器 null 返回不从表单中删除错误

java - 访问下拉列表中选定的数据

javascript - Angular 2 http.get订阅: How to call another function when service completed?

具有定义值的 Typescript 动态对象键

javascript - React/Redux - 无限滚动/从 API 加载更多

javascript - 如何正确处理axios错误以及如何获取详细的错误描述?

javascript - 跨域请求被阻止,origin 'null' 无法访问

javascript - 使用 onInputChange 和 ajax 调用进行 react 选择