具有嵌套属性访问的高阶类型函数



假设我有一个如下的接口。

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">;

游乐场链接

最新更新