UNPKG

hkt-toolbelt

Version:

Functional and composable type utilities

10 lines (9 loc) 422 B
import { Kind, Type, Union } from '..'; type _$paths2<T, O extends unknown[] = []> = { [K in keyof T]: T[K] extends Record<string, unknown> ? _$paths2<T[K], [...O, K]> : [...O, K]; }[keyof T] | O; export type _$paths<T, U = _$paths2<T>> = Union._$toList<U extends [] ? never : U>; export interface Paths extends Kind.Kind { f(x: Type._$cast<this[Kind._], Record<string, unknown>>): _$paths<typeof x>; } export {};