T

CommandTree

Commands keyed by name, at every level. TypeScript infers T per key by reversing this mapped type, from options on a leaf and from subcommands on a group. A conditional type here breaks inference.

type CommandTree<T> = { [K in keyof T]: CommandNode<T[K]> }