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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
=== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts ===
interface A {
numProp: number;
>numProp : number
}
interface B {
strProp: string;
>strProp : string
}
interface Foo {
method1(arg: A): void;
>method1 : (arg: A) => void
>arg : A
method2(arg: B): void;
>method2 : (arg: B) => void
>arg : B
}
function getFoo1(): Foo {
>getFoo1 : () => Foo
return {
>{ method1(arg) { arg.numProp = 10; }, method2(arg) { arg.strProp = "hello"; } } : { method1(arg: A): void; method2(arg: B): void; }
method1(arg) {
>method1 : (arg: A) => void
>arg : A
arg.numProp = 10;
>arg.numProp = 10 : 10
>arg.numProp : number
>arg : A
>numProp : number
>10 : 10
},
method2(arg) {
>method2 : (arg: B) => void
>arg : B
arg.strProp = "hello";
>arg.strProp = "hello" : "hello"
>arg.strProp : string
>arg : B
>strProp : string
>"hello" : "hello"
}
}
}
function getFoo2(): Foo {
>getFoo2 : () => Foo
return {
>{ method1: (arg) => { arg.numProp = 10; }, method2: (arg) => { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; }
method1: (arg) => {
>method1 : (arg: A) => void
>(arg) => { arg.numProp = 10; } : (arg: A) => void
>arg : A
arg.numProp = 10;
>arg.numProp = 10 : 10
>arg.numProp : number
>arg : A
>numProp : number
>10 : 10
},
method2: (arg) => {
>method2 : (arg: B) => void
>(arg) => { arg.strProp = "hello"; } : (arg: B) => void
>arg : B
arg.strProp = "hello";
>arg.strProp = "hello" : "hello"
>arg.strProp : string
>arg : B
>strProp : string
>"hello" : "hello"
}
}
}
function getFoo3(): Foo {
>getFoo3 : () => Foo
return {
>{ method1: function (arg) { arg.numProp = 10; }, method2: function (arg) { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; }
method1: function (arg) {
>method1 : (arg: A) => void
>function (arg) { arg.numProp = 10; } : (arg: A) => void
>arg : A
arg.numProp = 10;
>arg.numProp = 10 : 10
>arg.numProp : number
>arg : A
>numProp : number
>10 : 10
},
method2: function (arg) {
>method2 : (arg: B) => void
>function (arg) { arg.strProp = "hello"; } : (arg: B) => void
>arg : B
arg.strProp = "hello";
>arg.strProp = "hello" : "hello"
>arg.strProp : string
>arg : B
>strProp : string
>"hello" : "hello"
}
}
}
|