Dan*_*ndy 1 javascript promise typescript
我正在使用类中的 Typescript 进行简单的获取,它应该返回一个承诺,然后我想从这个获取中获取 JSON 响应。但是,无论我做了什么更改,该函数总是返回 a 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>;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我随后这样称呼它:
let result = apiHelper.FetchFromPortal<T>(xyz);
Run Code Online (Sandbox Code Playgroud)
根据打字稿,这将返回一个Promise<void | T>. 我试过像这样解决通话中的承诺:
let result = apiHelper.FetchFromPortal<T>(xyz).then(data => { return data });
Run Code Online (Sandbox Code Playgroud)
理论上应该解决Promise这个问题,但这似乎不起作用。
有什么理由不解决承诺只是对象吗?
有什么理由不解决承诺只是对象吗?
原因如下:
})
.catch((error: Error) => { console.log(error) });
Run Code Online (Sandbox Code Playgroud)
当异常发生时,此处理程序将错误记录到控制台并且不返回任何内容。编译器看到这一点并将void联合成员添加到返回类型。
| 归档时间: |
|
| 查看次数: |
3746 次 |
| 最近记录: |