1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
=== tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughInstantiation.ts ===
// instantiating a derived type can cause an infinitely expanding type reference to be generated
interface List<T> {
data: T;
>data : T
next: List<T>;
>next : List<T>
owner: OwnerList<T>;
>owner : OwnerList<T>
}
// will have an owner property that is an infinitely expanding type reference
interface OwnerList<U> extends List<List<U>> {
name: string;
>name : string
}
var list: List<string>;
>list : List<string>
var ownerList: OwnerList<string>;
>ownerList : OwnerList<string>
list = ownerList;
>list = ownerList : OwnerList<string>
>list : List<string>
>ownerList : OwnerList<string>
function other<T>(x: T) {
>other : <T>(x: T) => void
>x : T
var list: List<T>;
>list : List<T>
var ownerList: OwnerList<T>;
>ownerList : OwnerList<T>
list = ownerList;
>list = ownerList : OwnerList<T>
>list : List<T>
>ownerList : OwnerList<T>
}
|