interface Pair { first: T1; second: T2; } var x: Pair var y: { first: string; second: number; } x = y; y = x; declare function f(x: Pair); declare function f2(x: { first: T; second: U; }); f(x); f(y); f2(x); f2(y);