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
|
=== 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
>b : B
>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[]
|