type Common = { }; type A = Common & { type: 'A', foo: number }; type B = Common & { type: 'B', foo: Array } type MyType = A | B; function print(x: number) { console.log(x); } function printAll(val: MyType) { print(val.foo); // <--- foo could be an array }