types-kit.internaldeepkeys.md
September 4, 2023 ยท View on GitHub
Home > types-kit > InternalDeepKeys
InternalDeepKeys type
Signature:
type InternalDeepKeys<T, P extends string = ''> = keyof {
[K in Keys<T> as K extends PathKey
? P extends ''
? T[K] extends infer V
? V extends V
? IsObject<V> extends true
? // we will get values like 0 and '0', but only need to recurse once
K | (K extends number ? never : InternalDeepKeys<V, `${K}`>)
: K
: never
: never
: T[K] extends infer V
? V extends V
? IsObject<V> extends true
?
| `${P}.${K}`
| (K extends number ? never : InternalDeepKeys<V, `${P}.${K}`>)
: `${P}.${K}`
: never
: never
: never]: never
}
References: Keys, PathKey, IsObject, InternalDeepKeys