这在打字稿中有可能吗?
我想转一转,例如这样的事情:
interface IPromiseObject {
promiseA: Promise<number>;
promiseB: Promise<string>;
}这方面:
interface IResolvedPromiseObject {
promiseA: number;
promiseB: string;
}我想使用它来解析一个以许诺作为值的对象,但仍然保持类型安全。在本例中,我需要将IPromiseObject转换为具有相同键但解析的值的对象,以便可以将其用作返回类型。
export async function resolveAllObject<IPromiseObject>( promiseObject: IPromiseObject ): Promise<???> {
const resolvedPromiseObject = {};
for ( const key in promiseObject ) {
const value = await promiseObject[ key ];
Object.assign( resolvedPromiseObject, { [ key ]: value } );
}
return resolvedPromiseObject;
}发布于 2022-06-09 14:50:43
您可以映射属性,并使用Awaited实用程序类型提取承诺中的类型。
type AwaitedObject<T> = {
[K in keyof T]: Awaited<T[K]>
}用法:
interface IPromiseObject {
promiseA: Promise<number>;
promiseB: Promise<string>;
}
type AwaitedObject<T> = {
[K in keyof T]: Awaited<T[K]>
}
type IResolvedPromiseObject = AwaitedObject<IPromiseObject>
// type IResolvedPromiseObject = {
// promiseA: number;
// promiseB: string;
// }https://stackoverflow.com/questions/72562388
复制相似问题