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

如何为含动态键名的用户JSON结构编写泛型TypeScript类型?

解决方法

你需要用索引签名或者TypeScript内置的Record工具类型来定义这种键为任意字符串、值固定为UserInfo的对象类型,你的原有写法错误在于直接将泛型参数当作属性名,这不符合TypeScript的语法规则。

方式一:使用索引签名

type UserInfo = {
  name: string;
  last_name: string;
};

type Users = {
  users: {
    // 任意字符串类型的键,对应的值都是UserInfo类型
    [username: string]: UserInfo;
  };
};

方式二:使用Record工具类型(更简洁)

Record<K, T>是TypeScript内置工具类型,专门用来定义“键类型为K、值类型为T”的对象:

type UserInfo = {
  name: string;
  last_name: string;
};

type Users = {
  users: Record<string, UserInfo>;
};

这两种方式都能实现你想要的效果:无需手动定义每个具体的用户名键名,支持任意数量的扩展,所有键对应的结构都严格符合UserInfo类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:35:25