【发布时间】:2019-09-24 17:52:59
【问题描述】:
以下代码有效,但它承诺返回任何东西。我如何将其更改为承诺返回特定类型的 Promise 或 Promise 的联合? buildError 返回的内容也键入为 Response。
public async getSomething(userId: string): Promise<any> {
return new Promise((resolve: any, reject: any) =>
{
this.axios().get(baseUrl + path, config)
.then((response: any) => {
if (response && response.data && response.status === 200) {
resolve(response.data);
} else {
reject(this.buildError(response.status || 500, userId));
}
})
.catch((response: any) => {
logger.error(response);
const status = response.response ? response.response.status : 500;
reject(this.buildError(status, userId));
}
}
如果我键入 Promise,intelliJ 会抱怨类型“{}”不能分配给类型“响应”,类型“{}”中缺少属性“foo”。我试图将所有解决和拒绝都输入为响应。我假设 '{}' 指的是 => {...},但不清楚如何输入。
【问题讨论】:
-
使用
new Promise几乎总是不正确的。在这种情况下肯定是。
标签: typescript types