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

如何基于参数创建仅含单个指定属性的TypeScript类型?

实现动态属性名的泛型对象类型

要实现你需要的动态属性名泛型类型,直接用TypeScript的计算属性名结合泛型约束即可,具体写法如下:

首先定义基础的AuthPayload类型(假设你已有定义):

type AuthPayload = {
  // 这里是你的AuthPayload具体结构,比如:
  token: string;
  userId: number;
};

然后定义泛型Response类型:

type Response<T extends string | number | symbol> = {
  [K in T]: AuthPayload;
};

或者用TypeScript内置的Record工具类型简化写法,效果完全一致:

type Response<T extends string | number | symbol> = Record<T, AuthPayload>;

使用示例

type RegisterResponse = Response<"register">;
// 实际类型等价于:{ register: AuthPayload }

type LoginResponse = Response<"login">;
// 实际类型等价于:{ login: AuthPayload }

补充说明

你之前尝试的{ T: AuthPayload }写法错误在于,它是把属性名固定成了字符串"T",而非将泛型参数T作为动态属性名。而[K in T]这种计算属性语法,会把泛型参数T指定的键名映射到对象类型中,正好满足你的需求。

内容的提问来源于stack exchange,提问作者Ammar Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:55:19