interface A { x:B[]; } interface B { x:A[]; } function f(p: A) { return p }; var b:B; f(b); interface I1 { y:I2; } interface I2 { y:I3; } interface I3 { y:I1; } function g(p: I1) { return p }; var i2:I2; g(i2); var i3:I3; g(i3); interface I4 { y:I5; } interface I5 { y:I4; } var i4:I4; g(i4);