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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
=== tests/cases/compiler/infinitelyExpandingTypes4.ts ===
interface Query<T> {
>Query : Query<T>
>T : T
// ...
groupBy<K>(keySelector: (item: T) => K): Query<Grouping<K, T>>;
>groupBy : <K>(keySelector: (item: T) => K) => Query<Grouping<K, T>>
>K : K
>keySelector : (item: T) => K
>item : T
>T : T
>K : K
>Query : Query<T>
>Grouping : Grouping<K, T>
>K : K
>T : T
// ...
}
interface QueryEnumerator<T> {
>QueryEnumerator : QueryEnumerator<T>
>T : T
// ...
groupBy<K>(keySelector: (item: T) => K): QueryEnumerator<Grouping<K, T>>;
>groupBy : <K>(keySelector: (item: T) => K) => QueryEnumerator<Grouping<K, T>>
>K : K
>keySelector : (item: T) => K
>item : T
>T : T
>K : K
>QueryEnumerator : QueryEnumerator<T>
>Grouping : Grouping<K, T>
>K : K
>T : T
// ...
}
interface Grouping<K, T> extends Query<T> {
>Grouping : Grouping<K, T>
>K : K
>T : T
>Query : Query<T>
>T : T
key(): K;
>key : () => K
>K : K
}
var q1: Query<number>;
>q1 : Query<number>
>Query : Query<T>
var q2: QueryEnumerator<number>;
>q2 : QueryEnumerator<number>
>QueryEnumerator : QueryEnumerator<T>
var q3: Query<number>;
>q3 : Query<number>
>Query : Query<T>
q1 = q2; // should error
>q1 = q2 : QueryEnumerator<number>
>q1 : Query<number>
>q2 : QueryEnumerator<number>
q1 = q3; // should not error
>q1 = q3 : Query<number>
>q1 : Query<number>
>q3 : Query<number>
|