arrayer - Typescript: få sammanslagen/kombinerad typ från unionstyp


Jag har en union av okända typer. Jag vill få en sammanslagen typ av den. Till exempel:

const a = {
    x: 10
}
const b = {
    y: 'qwer'
}

const array = [a, b]

type TArr = typeof array
// I use a function which receives an array as argument so I only have type of array from now on

type TUnion = keyof TArr[number] // { x: number } | { y: string }
type TMerge = ? // { x: number } & { y: string }

Där TMerge praktiskt taget är samma som

type TMerge = {
  x: number
  y: string
}

Jag kan inte avgöra vilka typer som finns i en array eftersom arrayen ursprungligen består av olika klasser som används som moduler. Utan en sådan förening vet inte min slutliga klass om alla metoder och egenskaper.

Jag antar att det är omöjligt att få rätt sammanslagen typ direkt från en array på grund av &s tvetydighet mellan snitt och sammanslagning, men om det finns ett knep skulle jag gärna vilja höra det.

Relaterade artiklar