Skip to content

Instantly share code, notes, and snippets.

View j1mmie's full-sized avatar

Jimmie Tyrrell j1mmie

View GitHub Profile
@j1mmie
j1mmie / paths-of.ts
Created March 24, 2023 00:35 — forked from steven-schmoll-at/paths-of.ts
A typescript type to extract the keys and sub-keys of objects as dot separated paths.
type CombineAll<T> = T extends {[name in keyof T]: infer Type} ? Type : never
type PropertyNameMap<T, IncludeIntermediate extends boolean> = {
[name in keyof T]: T[name] extends object ? (
SubPathsOf<name, T, IncludeIntermediate> | (IncludeIntermediate extends true ? name : never)
) : name
}
type SubPathsOf<key extends keyof T, T, IncludeIntermediate extends boolean> = (
`${string & key}.${string & PathsOf<T[key], IncludeIntermediate>}`