A fresh object literal is assigned to a NON-discriminated union of two object types, supplying one property from each member. Does excess-property checking flag anything?
type A = { foo: number };
type B = { bar: number };
const v: A | B = { foo: 1, bar: 2 };