我正在类中使用 Typescript 进行简单的提取,它应该返回一个 promise ,然后我想从该提取中获取 JSON 响应。但是,无论我做了什么更改,函数总是返回 Promise<void | T>
。这破坏了我代码中的类型检查。
export class ApiHelper {
constructor() { }
public FetchFromPortal<T>(xyz: string) {
------ Other less relevant code -----------
return fetch(url, options)
.then((response) => this.CheckStatus(response))
.then((response) => this.ParseJSON<T>(response))
.then((response) => {
console.log(response);
return response;
})
.catch((error: Error) => { console.log(error) });
}
private CheckStatus(response : Response) : Promise<Response> {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response);
} else {
let error = new Error(response.statusText);
throw error;
}
}
private ParseJSON<T>(response : Response) {
return response.json() as Promise<T>;
}
}
我随后会这样调用它:
let result = apiHelper.FetchFromPortal<T>(xyz);
根据 Typescript,这将返回一个 Promise<void | T>
.我试过像这样解决通话中的 promise :
let result = apiHelper.FetchFromPortal<T>(xyz).then(data => { return data });
理论上应该解决 Promise
但这似乎不起作用。
promise 不只解决对象的任何原因?
最佳答案
Any reason why the promise isn't resolving to just the object?
原因如下:
})
.catch((error: Error) => { console.log(error) });
当发生异常时,此处理程序将错误记录到控制台并且不返回任何内容。编译器看到这一点并将 void
联合成员添加到返回类型。
关于javascript - Promise 提取返回 Promise<void | T> 而不是预期的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500524/