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
|
=== tests/cases/compiler/varianceAnnotationValidation.ts ===
// Repro from #49607
// Variance annotation error expected
interface Controller<out T> {
createAnimal: () => T;
>createAnimal : () => T
run: (animal: T) => void;
>run : (animal: T) => void
>animal : T
}
interface Animal {
run(): void;
>run : () => void
};
class Dog implements Animal {
>Dog : Dog
run() {};
>run : () => void
bark() {};
>bark : () => void
}
interface AnimalContainer<T> {
controller: Controller<T>;
>controller : Controller<T>
}
declare let ca: AnimalContainer<Animal>;
>ca : AnimalContainer<Animal>
declare let cd: AnimalContainer<Dog>;
>cd : AnimalContainer<Dog>
ca = cd; // Ok
>ca = cd : AnimalContainer<Dog>
>ca : AnimalContainer<Animal>
>cd : AnimalContainer<Dog>
cd = ca; // Error
>cd = ca : AnimalContainer<Animal>
>cd : AnimalContainer<Dog>
>ca : AnimalContainer<Animal>
|