gpt4 book ai didi

javascript - typescript :类型 'Promise' 不可分配给类型 'void | Destructor'

转载 作者:行者123 更新时间:2023-12-05 02:29:18 38 4
gpt4 key购买 nike

编辑正在展示

Type 'Promise' is not assignable to type 'void | Destructor'.

用于 useEffect 中的 checkUserLoggedIn() 调用。

我可以通过执行 const checkUserLoggedIn:any 来摆脱它

然而,也许这不是解决这个问题的最理想方法......

如果我执行 const checkUserLoggedIn:Promise然后我得到一个不同的错误:

This expression is not callable. Type 'Promise' has no callsignatures.

这不是我想要的...我希望它是可调用的...我正在将我的 javascript 文件翻译/转换为 typescript ......

useEffect(() => checkUserLoggedIn(), [])

// Check if user is logged in
const checkUserLoggedIn = async () => {
console.log('checkUserLoggedIn')

const res = await fetch(`${NEXT_URL}/api/user`)
const data = await res.json()

if (res.ok) {
setUser(data.user)

console.log('data.user', data.user)
router.push('/account/dashboard')
} else {
setUser(null)
}
}

最佳答案

以您描述的方式编写的箭头函数隐式返回函数的值。例如,此函数 () => 4 返回值 4。相反,当您将其包装在一个 block 中时,您必须显式定义返回值:() => { 4; 这个函数不返回任何东西。

在您的情况下,您正在传递一个匿名箭头函数,该函数隐式返回异步函数的结果,这是一个 promise 。

要解决此问题,请将传递给 useEffect 的函数的内容包装在一个 block 中:

useEffect(() => {
checkUserLoggedIn();
}, []);

关于javascript - typescript :类型 'Promise<void>' 不可分配给类型 'void | Destructor',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72234152/

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