2014-08-15 23:33:16 +02:00
|
|
|
=== tests/cases/compiler/functionOverloadsRecursiveGenericReturnType.ts ===
|
|
|
|
class B<V>{
|
|
|
|
>B : B<V>
|
|
|
|
>V : V
|
|
|
|
|
|
|
|
private id: V;
|
|
|
|
>id : V
|
|
|
|
>V : V
|
|
|
|
}
|
|
|
|
|
|
|
|
class A<U>{
|
|
|
|
>A : A<U>
|
|
|
|
>U : U
|
|
|
|
|
|
|
|
GetEnumerator: () => B<U>;
|
|
|
|
>GetEnumerator : () => B<U>
|
2014-08-19 04:56:03 +02:00
|
|
|
>B : B<V>
|
2014-08-15 23:33:16 +02:00
|
|
|
>U : U
|
|
|
|
}
|
|
|
|
|
|
|
|
function Choice<T>(args: T[]): A<T>;
|
|
|
|
>Choice : { <T>(args: T[]): A<T>; <T>(...v_args: T[]): A<T>; }
|
|
|
|
>T : T
|
|
|
|
>args : T[]
|
|
|
|
>T : T
|
2014-08-19 04:56:03 +02:00
|
|
|
>A : A<U>
|
2014-08-15 23:33:16 +02:00
|
|
|
>T : T
|
|
|
|
|
|
|
|
function Choice<T>(...v_args: T[]): A<T>;
|
|
|
|
>Choice : { <T>(args: T[]): A<T>; <T>(...v_args: T[]): A<T>; }
|
|
|
|
>T : T
|
|
|
|
>v_args : T[]
|
|
|
|
>T : T
|
2014-08-19 04:56:03 +02:00
|
|
|
>A : A<U>
|
2014-08-15 23:33:16 +02:00
|
|
|
>T : T
|
|
|
|
|
|
|
|
function Choice<T>(...v_args: any[]): A<T>{
|
|
|
|
>Choice : { <T>(args: T[]): A<T>; <T>(...v_args: T[]): A<T>; }
|
|
|
|
>T : T
|
|
|
|
>v_args : any[]
|
2014-08-19 04:56:03 +02:00
|
|
|
>A : A<U>
|
2014-08-15 23:33:16 +02:00
|
|
|
>T : T
|
|
|
|
|
|
|
|
return new A<T>();
|
|
|
|
>new A<T>() : A<T>
|
|
|
|
>A : typeof A
|
|
|
|
>T : T
|
|
|
|
}
|
|
|
|
|