Type alias TransferPath<P, Path>

TransferPath<P, Path>: Path extends `[${infer K}]${infer NextK}` ? NextK extends "" ? `${K}` : `${K}${EmptyNotDef<NextK, `.${TransferPath<NextK>}`>}` : Path extends `${infer K}[${infer NextK}]${infer Other}` ? `${K}${EmptyNotDef<NextK, `.${NextK}`>}${EmptyNotDef<BracketsToEmpty<Other>, `.${TransferPath<Other>}`>}` : Path extends `${infer K}.${infer NextK}` ? `${K}.${TransferPath<NextK>}` : Path

参考该文章改的路径转换type

Example

type fp = TransferPath<[a]>; // a type fp1 = TransferPath<[a][b][c]>; // a.b.c type fp2 = TransferPath<a.b.c>; // a.b.c type fp3 = TransferPath<a[b]>; // a.b type fp4 = TransferPath<a.[b]>; // a.b type fp5 = TransferPath<[a][b][c>; // error a.b.[c type fp6 = TransferPath<a[b][c]>; // a.b.c type fp7 = TransferPath<a[b]c>; // a.b.c type fp8 = TransferPath<a[b].c>; // a.b.c type fp9 = TransferPath<[a][b]c>; // a.b.c

Type Parameters

  • P extends string

  • Path = DotTrim<P>