type Path<T, K extends keyof T = keyof T> = K extends string ? K | (T[K] extends object ? `${K}.${Path<T[K]>}` : never) : never