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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
=== tests/cases/conformance/expressions/binaryOperators/additionOperator/additionOperatorWithTypeParameter.ts ===
// type parameter type is not a valid operand of addition operator
enum E { a, b }
>E : E
>a : E.a
>b : E.b
function foo<T, U>(t: T, u: U) {
>foo : <T, U>(t: T, u: U) => void
>t : T
>u : U
var a: any;
>a : any
var b: boolean;
>b : boolean
var c: number;
>c : number
var d: string;
>d : string
var e: Object;
>e : Object
var g: E;
>g : E
var f: void;
>f : void
// type parameter as left operand
var r1: any = t + a; // ok, one operand is any
>r1 : any
>t + a : any
>t : T
>a : any
var r2 = t + b;
>r2 : any
>t + b : any
>t : T
>b : boolean
var r3 = t + c;
>r3 : any
>t + c : any
>t : T
>c : number
var r4 = t + d; // ok, one operand is string
>r4 : string
>t + d : string
>t : T
>d : string
var r5 = t + e;
>r5 : any
>t + e : any
>t : T
>e : Object
var r6 = t + g;
>r6 : any
>t + g : any
>t : T
>g : E
var r7 = t + f;
>r7 : any
>t + f : any
>t : T
>f : void
// type parameter as right operand
var r8 = a + t; // ok, one operand is any
>r8 : any
>a + t : any
>a : any
>t : T
var r9 = b + t;
>r9 : any
>b + t : any
>b : boolean
>t : T
var r10 = c + t;
>r10 : any
>c + t : any
>c : number
>t : T
var r11 = d + t; // ok, one operand is string
>r11 : string
>d + t : string
>d : string
>t : T
var r12 = e + t;
>r12 : any
>e + t : any
>e : Object
>t : T
var r13 = g + t;
>r13 : any
>g + t : any
>g : E
>t : T
var r14 = f + t;
>r14 : any
>f + t : any
>f : void
>t : T
// other cases
var r15 = t + null;
>r15 : any
>t + null : any
>t : T
>null : null
var r16 = t + undefined;
>r16 : any
>t + undefined : any
>t : T
>undefined : undefined
var r17 = t + t;
>r17 : any
>t + t : any
>t : T
>t : T
var r18 = t + u;
>r18 : any
>t + u : any
>t : T
>u : U
var r19 = t + (() => { });
>r19 : any
>t + (() => { }) : any
>t : T
>(() => { }) : () => void
>() => { } : () => void
var r20 = t + [];
>r20 : any
>t + [] : any
>t : T
>[] : undefined[]
}
|