假设我有一个如下的接口。
interface Nested {
x: { b: { c: { d: "e"}}};
y: { b: { c: { d: "f"}}};
}
可以从中生成两种类型,如下所示。
type E = Nested['x']['b']['c']['d'];
type F = Nested['y']['b']['c']['d'];
然而,我想避免每次都重复['b']['c']['d'],而是做一些类似的事情
type E = NestedBCD<'x'>
type F = NestedBCD<'y'>
基本上,一种对类型进行操作的更高阶排序函数。打字稿里可能有这样的东西吗?
TS游乐场
您可以使用类型别名:
interface Nested { x: { b: { c: { d: 'e'}}}, y: { b: { c: { d: 'f'}}}}
type NestedBCD<T extends keyof Nested> = Nested[T]["b"]["c"]["d"];
type E = NestedBCD<"x">;
type F = NestedBCD<"y">;
游乐场链接