How can I force TypeScript to collapse identical unions?

const obj = {
a: {foo: 1},
b: {foo: 3},
};

type ExtractedType = typeof obj[keyof typeof obj];

I want this to yield { foo: number }, but I get { foo: number } | { foo: number } instead.

https://www.typescriptlang.org/play/?#code/MYewdgzgLgBCBGArGBeGBvAUDGBDAXBgGYgiECMAvgDTYzyHolkwDMNmlA3JplAJ4AHAKYwAogA8oAJ1zAowgCYAVIaLQCRIInCQBtANbD+2mJuGmEiALo8A9HZwwAegH4gA

Comments