Skip to content

Commit fef61d8

Browse files
committed
Fixed StringPathLeaves type
1 parent 0d8367f commit fef61d8

File tree

1 file changed

+5
-15
lines changed

1 file changed

+5
-15
lines changed

src/lib/stringPath.ts

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,17 @@ export type StringPath<T extends object> = NonNullable<T> extends (infer U)[]
5959
}[keyof T]
6060
: never;
6161

62-
type ArrField<Arr extends string, K> = Arr extends never
63-
? never
64-
: K extends string
65-
? `${K}.${Arr}`
66-
: never;
67-
6862
export type StringPathLeaves<
6963
T extends object,
7064
Arr extends string = never
7165
> = NonNullable<T> extends (infer U)[]
7266
? NonNullable<U> extends object
7367
?
68+
| (Arr extends never ? never : `.${Arr}`)
7469
| `[${number}]${NonNullable<U> extends unknown[]
7570
? ''
7671
: '.'}${StringPathLeaves<NonNullable<U>, Arr> & string}`
77-
: `[${number}]`
72+
: `[${number}]` | (Arr extends never ? never : `.${Arr}`)
7873
: NonNullable<T> extends object
7974
?
8075
| {
@@ -88,14 +83,9 @@ export type StringPathLeaves<
8883
| {
8984
[K in keyof T]-?: K extends string
9085
? NonNullable<T[K]> extends object
91-
?
92-
| (NonNullable<T[K]> extends unknown[]
93-
? ArrField<Arr, K>
94-
: never)
95-
| `${K}${NonNullable<T[K]> extends unknown[]
96-
? ''
97-
: '.'}${StringPathLeaves<NonNullable<T[K]>, Arr> &
98-
string}`
86+
? `${K}${NonNullable<T[K]> extends unknown[]
87+
? ''
88+
: '.'}${StringPathLeaves<NonNullable<T[K]>, Arr> & string}`
9989
: never
10090
: never;
10191
}[keyof T]

0 commit comments

Comments
 (0)