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
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
https://stackoverflow.com/questions/49401866/all-possible-keys-of-an-union-type#49402091
type ExtractedType = Omit
https://www.typescriptlang.org/play/?#code/MYewdgzgLgBCBGArGBeGBvAUDGBDAXBgGYgiECMAvgDTYzyHolkwDMNmlA3JplAJ4AHAKYwAogA8oAJ1zAowgCYAVIaLQB5ALYBLKAB4BIkEThIA2gGth-EzCPC7CRAF1qMAEQeAfJgD0fjgwAHoA-EA
https://www.typescriptlang.org/play/?#code/MYewdgzgLgBCBGArGBeGBvAUDGBDAXBjAGYgiECMMAvgDTYzyHolmEDMN9OwzjuAJ0IAiYV0zUA3JkxQAngAcApjACiADygDcwKEoAmAFUUq0ACnnKQxOEgCUAbQDWSudZiWl7hIgC60zxgAJSUIAFcAG1g0AHkAWwBLKAAeDS0dPSMTWhgwJQA3JQEAPmkAejKcGAA9AH5MIA
type Mapped = {
[K in keyof Obj]: Obj[K]
}