Now hava interfae A, want get type B key and value from A. I don't know how define value of type E.
interface A {
a: {
name: string;
age: number;
};
b: {
w: boolean;
h: symbol;
};
}
//want
// type B = {
// name: string;
// age: number;
// w: boolean;
// h: symbol;
// };
type B<T> = { [K in keyof T]: T[K] }[keyof T];
type C<T> = T extends any ? keyof T : never;
type D<T> = T extends any ? T[keyof T] : never;
type E<T> = { [K in C<B<T>>]: T[keyof T][K] };
type G = E<A>;