Typescript 使用字符串文字作为计算属性名称的模板参数

Typescript 使用字符串文字作为计算属性名称的模板参数,typescript,Typescript,假设我有几个对象,每个对象都包含一些类型相似的属性 接口材料{ a:数字; b:弦; c:T; } ThingOne型{ 一:东西,; } 第二类{ 二:东西,; } 类型thingtree{ 三:东西,; } 是否有某种方法可以使用泛型参数化属性名? 我的想法大致如下: 接口事物{ [键:U]:东西; } //然后 类型ThingOne=事物; 类型ThingTwo=事物; 类型thingtree=事物; 显然,[key:U]不正确。我似乎不知道它应该是什么,或者它是否可能。您可以使用

假设我有几个对象,每个对象都包含一些类型相似的属性


接口材料{
a:数字;
b:弦;
c:T;
}
ThingOne型{
一:东西,;
}
第二类{
二:东西,;
}
类型thingtree{
三:东西,;
}
是否有某种方法可以使用泛型参数化属性名? 我的想法大致如下:


接口事物{
[键:U]:东西;
}
//然后
类型ThingOne=事物;
类型ThingTwo=事物;
类型thingtree=事物;

显然,
[key:U]
不正确。我似乎不知道它应该是什么,或者它是否可能。

您可以使用内置映射类型
记录
,它采用
字符串
文字类型(或字符串文字类型的联合),这将是属性名,以及成员的类型:

interface Stuff<T> {
  a: number;
  b: string;
  c: T;
}

type ThingOne = Record<'one', Stuff<string>>;
type ThingTwo = Record<'two', Stuff<number>>;
type ThingThree = Record<'three', Stuff<boolean>>;

接口材料{
a:数字;
b:弦;
c:T;
}
ThingOne类型=记录;
类型ThingTwo=记录;
类型thingtree=记录;

谢谢!这正是我要找的。