feat(typescript-types): Allow inversion of filter in KeyPaths<T, O, F>
This commit is contained in:
@@ -7,11 +7,13 @@ import type { Assign } from './assign.js'
|
||||
interface KeyPaths_Options {
|
||||
separator?: string
|
||||
leavesOnly?: boolean
|
||||
invertFilter?: boolean
|
||||
}
|
||||
|
||||
interface KeyPaths_DefaultOptions {
|
||||
separator: '.'
|
||||
leavesOnly: true
|
||||
invertFilter: false
|
||||
}
|
||||
|
||||
type GetPrefixedKey<
|
||||
@@ -34,8 +36,16 @@ type KeyPathsOfStringKeys<
|
||||
Parent extends string = ''
|
||||
> = {
|
||||
[Key in keyof Obj & string]: Obj[Key] extends Filter
|
||||
? never
|
||||
: KeyPathOf<Obj[Key], Options, GetPrefixedKey<Parent, Key, Options['separator']>, Filter>
|
||||
? If<
|
||||
Options['invertFilter'],
|
||||
KeyPathOf<Obj[Key], Options, GetPrefixedKey<Parent, Key, Options['separator']>, Filter>,
|
||||
never
|
||||
>
|
||||
: If<
|
||||
Options['invertFilter'],
|
||||
never,
|
||||
KeyPathOf<Obj[Key], Options, GetPrefixedKey<Parent, Key, Options['separator']>, Filter>
|
||||
>
|
||||
}[keyof Obj & string]
|
||||
|
||||
export type KeyPaths<
|
||||
|
||||
Reference in New Issue
Block a user