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
|
=== tests/cases/compiler/typeInferenceWithExcessProperties.ts ===
// Repro from #17041
interface Named {
name: string;
>name : string
}
function parrot<T extends Named>(obj: T): T {
>parrot : <T extends Named>(obj: T) => T
>obj : T
return obj;
>obj : T
}
parrot({
>parrot({ name: "TypeScript",}) : { name: string; }
>parrot : <T extends Named>(obj: T) => T
>{ name: "TypeScript",} : { name: string; }
name: "TypeScript",
>name : string
>"TypeScript" : "TypeScript"
});
parrot({
>parrot({ name: "TypeScript", age: 5,}) : { name: string; age: number; }
>parrot : <T extends Named>(obj: T) => T
>{ name: "TypeScript", age: 5,} : { name: string; age: number; }
name: "TypeScript",
>name : string
>"TypeScript" : "TypeScript"
age: 5,
>age : number
>5 : 5
});
parrot({
>parrot({ name: "TypeScript", age: function () { },}) : { name: string; age: () => void; }
>parrot : <T extends Named>(obj: T) => T
>{ name: "TypeScript", age: function () { },} : { name: string; age: () => void; }
name: "TypeScript",
>name : string
>"TypeScript" : "TypeScript"
age: function () { },
>age : () => void
>function () { } : () => void
});
parrot({
>parrot({ name: "TypeScript", sayHello() { },}) : { name: string; sayHello(): void; }
>parrot : <T extends Named>(obj: T) => T
>{ name: "TypeScript", sayHello() { },} : { name: string; sayHello(): void; }
name: "TypeScript",
>name : string
>"TypeScript" : "TypeScript"
sayHello() {
>sayHello : () => void
},
});
|