Skip to content

Commit 885318c

Browse files
authored
Fix FormPath types (#422)
* Extend DictOrArray type * Remove unnecessary BuiltInObjects type
1 parent 7e3383d commit 885318c

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/lib/stringPath.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export function mergePath(path: (string | number | symbol)[]) {
1919
}, '');
2020
}
2121

22-
type BuiltInObjects = Date | Set<unknown> | File;
22+
type DictOrArray = Record<PropertyKey, unknown> | unknown[];
2323

2424
/**
2525
* Lists all paths in an object as string accessors.
@@ -82,13 +82,11 @@ type StringPath<
8282
path: '';
8383
type: never;
8484
}
85-
> = T extends BuiltInObjects
86-
? If<Options, 'filter', 'leaves' | 'all', Options['path'], never, T>
87-
: T extends (infer U)[]
85+
> = T extends (infer U)[]
8886
?
8987
| If<Options, 'objAppend', string, Concat<Options['path'], Options['objAppend']>, never, T>
9088
| If<Options, 'filter', 'arrays' | 'all', Options['path'], never, T>
91-
| (NonNullable<U> extends object
89+
| (NonNullable<U> extends DictOrArray
9290
? StringPath<
9391
NonNullable<U>,
9492
{
@@ -100,7 +98,7 @@ type StringPath<
10098
>
10199
: If<Options, 'filter', 'leaves' | 'all', `${Options['path']}[${number}]`, never, T>)
102100
: {
103-
[K in Extract<AllKeys<T>, string>]: NonNullable<T[K]> extends object
101+
[K in Extract<AllKeys<T>, string>]: NonNullable<T[K]> extends DictOrArray
104102
?
105103
| If<
106104
Options,
@@ -122,7 +120,7 @@ type StringPath<
122120
never,
123121
T[K]
124122
>
125-
: NonNullable<U> extends object
123+
: NonNullable<U> extends DictOrArray
126124
? IsAny<T[K]> extends true
127125
? Concat<Options['path'], `${K}[${number}]`>
128126
: If<
@@ -141,7 +139,7 @@ type StringPath<
141139
never,
142140
U
143141
>)
144-
| (NonNullable<U> extends object
142+
| (NonNullable<U> extends DictOrArray
145143
? StringPath<
146144
NonNullable<U>,
147145
{

0 commit comments

Comments
 (0)