//// [infiniteExpansionThroughInstantiation.ts] // instantiating a derived type can cause an infinitely expanding type reference to be generated interface List { data: T; next: List; owner: OwnerList; } // will have an owner property that is an infinitely expanding type reference interface OwnerList extends List> { name: string; } var list: List; var ownerList: OwnerList; list = ownerList; function other(x: T) { var list: List; var ownerList: OwnerList; list = ownerList; } //// [infiniteExpansionThroughInstantiation.js] var list; var ownerList; list = ownerList; function other(x) { var list; var ownerList; list = ownerList; }