type A = { kind : 'a' ; foo : string ; } ; type B = { kind : 'b' ; foo : number ; } ; type C = { kind : 'c' ; foo : number ; } ; type AB = A & B ; type BC = B & C ; declare let bc ; let foo = bc . foo ; declare let x ; let a = x ;