我正在尝试找出一个函数的 Typescript,该函数采用键值对字典,其中值为 Promise。并返回键值对的字典,其中值是已解析的 Promise。我认为下面的代码适用于此。 IArg 和 IResult 接口不会抛出任何错误。
interface IArg{ [key: string]: Promise<any> }
interface IResult{ [key: string]: any extends Promise ? never : any}
public async promiseProps(obj: IArg): Promise<IResult>{
return Promise.all(Object.values(obj)).then(
(values) => {
const keys: string[] = Object.keys(obj);
const length = keys.length;
const d: IResult = {};
for(let i = 0; i < length; i++){
d[keys[i]] = values[i];
}
return d
}
)
}
但是我无法弄清楚的是如何指示对于特定键,该键的返回类型是已解决承诺的类型。
例如如果我的arg是(满足IArg定义的类型):
{
foo: Promise<string>,
bar: Promise<int>,
}
我要我的返回类型保证返回值满足:
{
foo: string,
bar: int,
}
我当前的返回值只保证值不是 Promises。谢谢!