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/compiler/typeArgumentInferenceWithConstraintAsCommonRoot.ts ===
interface Animal { x }
>x : any
interface Giraffe extends Animal { y }
>y : any
interface Elephant extends Animal { z }
>z : any
function f<T extends Animal>(x: T, y: T): T { return undefined; }
>f : <T extends Animal>(x: T, y: T) => T
>x : T
>y : T
>undefined : undefined
var g: Giraffe;
>g : Giraffe
var e: Elephant;
>e : Elephant
f(g, e); // valid because both Giraffe and Elephant satisfy the constraint. T is Animal
>f(g, e) : any
>f : <T extends Animal>(x: T, y: T) => T
>g : Giraffe
>e : Elephant
|