You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:32:02