Hmm, ciekawy przypadek. :)
Stworzyłem nowy typ generyczny, który wyciąga typ z unii `Object[N]`:
type TObjs<T> = Extract<T, Object1 | Object2 | Object3>
, ustawiłem argument o generycznym typie dla metody method na podstawie nowo stworzonego typu:
method<T>(object: TObjs<T>) {
i usunąłem samodzielne deklarowanie typu dla zmiennej result.
const result = foo.method(obj1);
TypeScript wnioskuje wtedy typ Result1 | Result2 | undefined dla zmiennej result. O to Ci chodzi?
Całość na TypeScript Playground.