【发布时间】:2018-10-26 22:01:21
【问题描述】:
我有以下代码,其中我有两个函数,它们返回两种不同类型的对象(InterfaceA 和 InterfaceB)
现在,当我对它们调用 Promise.all 时,我无法定义 promises 变量的类型,所以我必须使用任何类型。
interface InterfaceA {
value: string;
}
interface InterfaceB {
value: number;
}
const returnA = (): Promise<InterfaceA> => {
const obj: InterfaceA = {
value: 'a'
};
return Promise.resolve(obj);
};
const returnB = (): Promise<InterfaceB> => {
const obj: InterfaceB = {
value: 1
};
return Promise.resolve(obj);
};
const promises: any = [returnA(), returnB()];
const res = await Promise.all(promises);
console.log(res)
const objA: InterfaceA = res[0];
问题是,一旦我得到 Promise.all 的响应,并尝试定义响应的类型,我得到以下错误:
Type '{}' is not assignable to type 'InterfaceA'.
Property 'value' is missing in type '{}'. (2322)
Type '{}' is not assignable to type 'InterfaceA'. (2322)
我不确定如何处理这个问题以及我可以做些什么来保留我在 Promise.all 的响应中得到的对象的类型?
谢谢!
【问题讨论】:
标签: javascript node.js typescript