typescript使用Promise类型



我对typescript还是比较陌生的,我不知道如何在使用Promise的函数中添加类型。

我遵循Typescript的建议,让我的函数Props从UserStatePropsPromise<UserStateProps>,但现在抱怨这个Promise<UserStateProps>缺少必要的属性。

我有这个功能:

const mergeCookiesWithUserState = async (defaultUserState: UserStateProps): Promise<UserStateProps>  => {
const newUserState = { ...defaultUserState }
for (const key in newUserState) {
if (Object.getOwnPropertyDescriptor(cookiesName, key)) {
const cookieValue = await getCookieValue(cookiesName[key])
console.log({ cookieValue})
if (cookieValue !== undefined) {
newUserState[key] = cookieValue
}
}
}

return newUserState
}

,我用它来更新React状态。react的用户状态使用UserStateProps来检查状态类型。自从我在mergeCookiesWithUserState中引入Promise以来,用户状态抱怨它的props:

Type 'Promise<UserStateProps>' is missing the following properties from type 'UserStateProps': numOfSearches, language, adultContentFilter, openInNewTab, isModalOpents(2739)

接口如下:

export interface UserStateProps {

numOfSearches: number
language: number
adultContentFilter: number
openInNewTab: boolean
isModalOpen: boolean
}
export interface UserContextProps {
userState: UserStateProps
setUserState: (userState: Partial<UserStateProps>) => void
}

有谁能帮我弄明白这件事吗?更新:事实证明,问题是我如何编写getCookieValue(),因此如何处理从它返回的承诺。但是你所有的评论都让我重新回到了正确的轨道上,找到了解决方案。我相信我签名的答案是正确的,是我得到的错误和我的问题的异步性质中最相关的一个。谢谢!

Type 'Promise<UserStateProps>' is missing the following properties from type 'UserStateProps'

这意味着你在代码的某个地方做了:

const example: UserStateProps = mergeCookiesWithUserState()

与此同时,你特别告诉你的函数类型返回Promise<UserStateProps>,你试图分配给UserStateProps

你不能给UserStateProps赋一个promise

承诺是存在的,因为你的函数被标记为async,它会自动返回一个承诺,它应该返回的值作为承诺的类型,它最终会解析到。

const example: UserStateProps = await mergeCookiesWithUserState()

这是所有你需要修复你的错误,await关键字将让承诺解决之前赋值给example

相关内容

最新更新