I have a type that references itself. ```ts type TParseObject<T>={ [key in keyof T]?: string | TParseObject<T> };``` So for example ```ts type Foo = ['a', 'b', 'c'] const Bar: TParseObject<Foo> = { a: { b: 'ok', c:{ b: 'not ok' } } }``` How can I recursively omit keys such that nested objects can only contain unused ones?