gpt4 book ai didi

javascript - 修复 Typescript 中的类型

转载 作者:行者123 更新时间:2023-12-02 22:43:25 24 4
gpt4 key购买 nike

我有一个从外部 API 消耗数据的方法:

public async getStatus(id: string): Promise<APIRes | undefined> {
try {
const result = await getRequest(`${this.URL}/endpoint/${id}`)
const response: APIRes = result.data

return response
} catch (err) {
errorHandler(err)
}
}

APIRes 的界面如下所示:

export interface APIRes{
version: string,
status: string,
uuid: string,
time: string

}

问题是当我尝试从另一个方法调用 getStatus 时:

public async getListOfResults(id: string) {
try {

const getStatus = await this.getStatus(id)
if (getStatus.status === 'Queue' || getStatus.status === 'Progr') {
...//MORE CODE
}

const result = await getRequest(`${this.URL}/endpoint/${id}/result`)

return result.data
} catch (err) {
errorHandler(err)
}
}

我得到Object is possibly undefined在 getStatus.status 上。现在我明白为什么会发生这种情况(因为 getStatus 方法可能返回未定义),但不确定如何最好地修复而不添加 nostrict标志。

如果我删除<| undefined>getStatus 的返回类型中我明白了

Function lacks ending return statement and return type does not include 'undefined'.ts(2366)`

如果我尝试将其从 undefined 更改为 void,我仍然会在 getStatus.status 上收到错误。

最佳答案

这种方法会让事情变得比你需要的更加困难。如果 getStatus 出现错误,您希望将其解析为 undefined 吗?如果是这样,那么调用它的所有内容都必须检查未定义的情况。为什么不让调用者查找抛出的错误呢?只需让错误冒泡,或者执行错误处理程序并重新抛出:

public async getStatus(id: string): Promise<APIRes> {
try {
const result = await getRequest(`${this.URL}/endpoint/${id}`)
const response: APIRes = result.data

return response
} catch (err) {
errorHandler(err)
throw err;
}
}

现在,这将解析为APIRes,并且您不必处理未定义的情况。您只需要确保某些东西捕获错误即可。

关于javascript - 修复 Typescript 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511000/

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