有没有办法在TypeScript定义中动态生成成员?

有没有办法在TypeScript定义中动态生成成员?,typescript,Typescript,我认为这个问题的标题不是很好,但我很难想出更好的题目,所以现在就可以了 我也相当确定我想要的东西没有得到支持,但我希望被证明是错的 我正在调用一个API,它根据查询改变返回对象中的成员名称 e、 g 有没有一种方法可以创建一个将“生成”名称{language}成员的定义?不支持以这种方式操纵属性名称(即,将一个字符串连接到另一个字符串,并将其作为已检查类型的属性) 您所能做的最好的事情不仅仅是返回属性与语言名称相同的对象: function GetInfo<T extends string

我认为这个问题的标题不是很好,但我很难想出更好的题目,所以现在就可以了

我也相当确定我想要的东西没有得到支持,但我希望被证明是错的

我正在调用一个API,它根据查询改变返回对象中的成员名称

e、 g


有没有一种方法可以创建一个将“生成”名称{language}成员的定义?

不支持以这种方式操纵属性名称(即,将一个字符串连接到另一个字符串,并将其作为已检查类型的属性)

您所能做的最好的事情不仅仅是返回属性与语言名称相同的对象:

function GetInfo<T extends string>(langs: T[]): Record<T | 'default', string>{
  return null as any;
}
let values = GetInfo(["en", "de"]) // values is  { en: string; de: string; default: string  }
values.default
values.de
values.en
函数GetInfo(langs:T[]):记录{ 返回空值,如有; } 让values=GetInfo([“en”,“de”])//值为{en:string;de:string;默认值:string} 默认值 价值观 价值观
<> P>有一个GITHUB建议增加对字符串文字操作的支持,但是在现在的路线图上,它已经不存在了,

谢谢你的确认,并链接到这个问题。“ANDYJ将你的+1添加到这个问题上,当他们考虑下一步要实现什么时,对团队来说可能很重要:
function GetInfo<T extends string>(langs: T[]): Record<T | 'default', string>{
  return null as any;
}
let values = GetInfo(["en", "de"]) // values is  { en: string; de: string; default: string  }
values.default
values.de
values.en