如何创建Promises<T>工具类型将对象成员转为Promise类型?
实现将对象成员全部转为Promise类型的Promises类型
在TypeScript中,你可以通过映射类型来实现这个需求,映射类型专门用于遍历对象的键并转换对应的值类型。
核心实现代码
type Promises<T extends object> = { [K in keyof T]: Promise<T[K]>; };
代码解释
T extends object:约束泛型参数T必须是对象类型,避免传入非对象值导致错误。[K in keyof T]:遍历T的所有键名,K会依次取到T的每个键。Promise<T[K]>:将每个键原本的类型T[K]包裹为Promise类型。
使用示例
假设我们有一个普通的用户类型:
interface User { id: number; name: string; isActive: boolean; }
使用Promises<T>后,会得到每个成员都是Promise的新类型:
type UserPromises = Promises<User>; // 等价于手动定义: interface UserPromises { id: Promise<number>; name: Promise<string>; isActive: Promise<boolean>; }
保留原类型修饰符
映射类型会自动保留原对象成员的修饰符(比如可选?、只读readonly):
interface PartialUser { id?: number; readonly name: string; } type PartialUserPromises = Promises<PartialUser>; // 等价于: interface PartialUserPromises { id?: Promise<number>; readonly name: Promise<string>; }
内容的提问来源于stack exchange,提问作者cat_in_hat
相关产品推荐
相关产品推荐

