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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
=== tests/cases/compiler/typeArgInference.ts ===
interface I {
f<T, U>(a1: { a: T; b: U }[], a2: { a: T; b: U }[]): { c: T; d: U };
>f : <T, U>(a1: { a: T; b: U; }[], a2: { a: T; b: U; }[]) => { c: T; d: U; }
>a1 : { a: T; b: U; }[]
>a : T
>b : U
>a2 : { a: T; b: U; }[]
>a : T
>b : U
>c : T
>d : U
g<T, U>(...arg: { a: T; b: U }[][]): { c: T; d: U };
>g : <T, U>(...arg: { a: T; b: U; }[][]) => { c: T; d: U; }
>arg : { a: T; b: U; }[][]
>a : T
>b : U
>c : T
>d : U
}
var o = { a: 3, b: "test" };
>o : { a: number; b: string; }
>{ a: 3, b: "test" } : { a: number; b: string; }
>a : number
>3 : 3
>b : string
>"test" : "test"
var x: I;
>x : I
var t1 = x.f([o], [o]);
>t1 : { c: number; d: string; }
>x.f([o], [o]) : { c: number; d: string; }
>x.f : <T, U>(a1: { a: T; b: U; }[], a2: { a: T; b: U; }[]) => { c: T; d: U; }
>x : I
>f : <T, U>(a1: { a: T; b: U; }[], a2: { a: T; b: U; }[]) => { c: T; d: U; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
var t1: { c: number; d: string };
>t1 : { c: number; d: string; }
>c : number
>d : string
var t2 = x.f<number, string>([o], [o]);
>t2 : { c: number; d: string; }
>x.f<number, string>([o], [o]) : { c: number; d: string; }
>x.f : <T, U>(a1: { a: T; b: U; }[], a2: { a: T; b: U; }[]) => { c: T; d: U; }
>x : I
>f : <T, U>(a1: { a: T; b: U; }[], a2: { a: T; b: U; }[]) => { c: T; d: U; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
var t2: { c: number; d: string };
>t2 : { c: number; d: string; }
>c : number
>d : string
var t3 = x.g([o], [o]);
>t3 : { c: number; d: string; }
>x.g([o], [o]) : { c: number; d: string; }
>x.g : <T, U>(...arg: { a: T; b: U; }[][]) => { c: T; d: U; }
>x : I
>g : <T, U>(...arg: { a: T; b: U; }[][]) => { c: T; d: U; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
var t3: { c: number; d: string };
>t3 : { c: number; d: string; }
>c : number
>d : string
var t4 = x.g<number, string>([o], [o]);
>t4 : { c: number; d: string; }
>x.g<number, string>([o], [o]) : { c: number; d: string; }
>x.g : <T, U>(...arg: { a: T; b: U; }[][]) => { c: T; d: U; }
>x : I
>g : <T, U>(...arg: { a: T; b: U; }[][]) => { c: T; d: U; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
>[o] : { a: number; b: string; }[]
>o : { a: number; b: string; }
var t4: { c: number; d: string };
>t4 : { c: number; d: string; }
>c : number
>d : string
|