//// [infinitelyExpandingTypes1.ts] interface List { data: T; next: List; owner: List>; } interface MyList { data: T; next: MyList; owner: MyList>; } var l: List; var m: MyList; l == m; // should error var l2: List; l == l2; // should error; l == l; // should not error //// [infinitelyExpandingTypes1.js] var l; var m; l == m; var l2; l == l2; l == l;