interface RouteLinking<T, N>{ path: undefined | { [K in string | number | symbol as undefined extends T[N][K] ? never : K]: ParamDef<T[N][K]> } & {}; query: undefined | { [K in string | number | symbol as undefined extends T[N][K] ? K : never]?: ParamDef<T[N][K]> }; }