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/lastPropertyInLiteralWins.ts ===
interface Thing {
thunk: (str: string) => void;
>thunk : (str: string) => void
>str : string
}
function test(thing: Thing) {
>test : (thing: Thing) => void
>thing : Thing
thing.thunk("str");
>thing.thunk("str") : void
>thing.thunk : (str: string) => void
>thing : Thing
>thunk : (str: string) => void
>"str" : "str"
}
test({ // Should error, as last one wins, and is wrong type
>test({ // Should error, as last one wins, and is wrong type thunk: (str: string) => {}, thunk: (num: number) => {}}) : void
>test : (thing: Thing) => void
>{ // Should error, as last one wins, and is wrong type thunk: (str: string) => {}, thunk: (num: number) => {}} : { thunk: (num: number) => void; }
thunk: (str: string) => {},
>thunk : (str: string) => void
>(str: string) => {} : (str: string) => void
>str : string
thunk: (num: number) => {}
>thunk : (str: string) => void
>(num: number) => {} : (num: number) => void
>num : number
});
test({ // Should be OK. Last 'thunk' is of correct type
>test({ // Should be OK. Last 'thunk' is of correct type thunk: (num: number) => {}, thunk: (str: string) => {}}) : void
>test : (thing: Thing) => void
>{ // Should be OK. Last 'thunk' is of correct type thunk: (num: number) => {}, thunk: (str: string) => {}} : { thunk: (str: string) => void; }
thunk: (num: number) => {},
>thunk : (num: number) => void
>(num: number) => {} : (num: number) => void
>num : number
thunk: (str: string) => {}
>thunk : (num: number) => void
>(str: string) => {} : (str: string) => void
>str : string
});
|