fix(typescript-types): Handle union types when filtering
This commit is contained in:
@@ -29,15 +29,17 @@ type KeyPathOf<
|
||||
? PrefixIfNot<Options['leavesOnly'], Parent, KeyPathsOfStringKeys<Obj, Options, Filter, Parent>>
|
||||
: Parent
|
||||
|
||||
type DoesNotMatchFilter<T, Filter> = T extends Filter ? false : true
|
||||
|
||||
type KeyPathsOfStringKeys<
|
||||
Obj extends object,
|
||||
Options extends Required<KeyPaths_Options>,
|
||||
Filter = never,
|
||||
Parent extends string = ''
|
||||
> = {
|
||||
[Key in keyof Obj & string]: Obj[Key] extends Filter
|
||||
? never
|
||||
: KeyPathOf<Obj[Key], Options, GetPrefixedKey<Parent, Key, Options['separator']>, Filter>
|
||||
[Key in keyof Obj & string]: DoesNotMatchFilter<Obj[Key], Filter> extends true
|
||||
? KeyPathOf<Obj[Key], Options, GetPrefixedKey<Parent, Key, Options['separator']>, Filter>
|
||||
: never
|
||||
}[keyof Obj & string]
|
||||
|
||||
export type KeyPaths<
|
||||
|
||||
Reference in New Issue
Block a user