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
|
=== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts ===
function fn<A extends Date, B extends A, C extends B>(a: A, b: B, c: C) {
>fn : <A extends Date, B extends A, C extends B>(a: A, b: B, c: C) => A[]
>A : A
>Date : Date
>B : B
>A : A
>C : C
>B : B
>a : A
>A : A
>b : B
>B : B
>c : C
>C : C
return [a, b, c];
>[a, b, c] : A[]
>a : A
>b : B
>c : C
}
var d = fn(new Date(), new Date(), new Date());
>d : Date[]
>fn(new Date(), new Date(), new Date()) : Date[]
>fn : <A extends Date, B extends A, C extends B>(a: A, b: B, c: C) => A[]
>new Date() : Date
>Date : DateConstructor
>new Date() : Date
>Date : DateConstructor
>new Date() : Date
>Date : DateConstructor
var d: Date[]; // Should be OK (d should be Date[])
>d : Date[]
>Date : Date
|