【发布时间】:2017-03-06 05:22:44
【问题描述】:
我正在使用async 函数调用现有的基于promise 的API,该API 以键入错误拒绝该promise。
您可以像这样模拟这种行为:
interface ApiError {
code: number;
error: string;
}
function api(): Promise<any> {
return new Promise((resolve, reject) => {
reject({ code: 123, error: "Error!" });
});
}
现在有了promise,我可以将错误类型注释为ApiError:
api().catch((error: ApiError) => console.log(error.code, error.message))
但是当我使用async 时,如果我尝试在try ... catch() 中注释错误类型:
async function test() {
try {
return await api();
} catch (error: ApiError) {
console.log("error", error);
}
}
编译出错:
Catch 子句变量不能有类型注释。
那么,我怎么知道我期待什么样的错误呢?我需要在catch() 块中写一个断言吗?这是异步的错误/不完整功能吗?
【问题讨论】:
标签: typescript