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 158 159 160
|
//// [objectLiteralGettersAndSetters.ts]
// Get and set accessor with the same name
var sameName1a = { get 'a'() { return ''; }, set a(n) { var p = n; var p: string; } };
var sameName2a = { get 0.0() { return ''; }, set 0(n) { var p = n; var p: string; } };
var sameName3a = { get 0x20() { return ''; }, set 3.2e1(n) { var p = n; var p: string; } };
var sameName4a = { get ''() { return ''; }, set ""(n) { var p = n; var p: string; } };
var sameName5a = { get '\t'() { return ''; }, set '\t'(n) { var p = n; var p: string; } };
var sameName6a = { get 'a'() { return ''; }, set a(n) { var p = n; var p: string; } };
// PropertyName CallSignature{FunctionBody} is equivalent to PropertyName:function CallSignature{FunctionBody}
var callSig1 = { num(n: number) { return '' } };
var callSig1: { num: (n: number) => string; };
var callSig2 = { num: function (n: number) { return '' } };
var callSig2: { num: (n: number) => string; };
var callSig3 = { num: (n: number) => '' };
var callSig3: { num: (n: number) => string; };
// Get accessor only, type of the property is the annotated return type of the get accessor
var getter1 = { get x(): string { return undefined; } };
var getter1: { readonly x: string; }
// Get accessor only, type of the property is the inferred return type of the get accessor
var getter2 = { get x() { return ''; } };
var getter2: { readonly x: string; }
// Set accessor only, type of the property is the param type of the set accessor
var setter1 = { set x(n: number) { } };
var setter1: { x: number };
// Set accessor only, type of the property is Any for an unannotated set accessor
var setter2 = { set x(n) { } };
var setter2: { x: any };
var anyVar: any;
// Get and set accessor with matching type annotations
var sameType1 = { get x(): string { return undefined; }, set x(n: string) { } };
var sameType2 = { get x(): Array<number> { return undefined; }, set x(n: number[]) { } };
var sameType3 = { get x(): any { return undefined; }, set x(n: typeof anyVar) { } };
var sameType4 = { get x(): Date { return undefined; }, set x(n: Date) { } };
// Type of unannotated get accessor return type is the type annotation of the set accessor param
var setParamType1 = {
set n(x: (t: string) => void) { },
get n() { return (t) => {
var p: string;
var p = t;
}
}
};
var setParamType2 = {
get n() { return (t) => {
var p: string;
var p = t;
}
},
set n(x: (t: string) => void) { }
};
// Type of unannotated set accessor parameter is the return type annotation of the get accessor
var getParamType1 = {
set n(x) {
var y = x;
var y: string;
},
get n() { return ''; }
};
var getParamType2 = {
get n() { return ''; },
set n(x) {
var y = x;
var y: string;
}
};
// Type of unannotated accessors is the inferred return type of the get accessor
var getParamType3 = {
get n() { return ''; },
set n(x) {
var y = x;
var y: string;
}
};
//// [objectLiteralGettersAndSetters.js]
// Get and set accessor with the same name
var sameName1a = { get 'a'() { return ''; }, set a(n) { var p = n; var p; } };
var sameName2a = { get 0.0() { return ''; }, set 0(n) { var p = n; var p; } };
var sameName3a = { get 0x20() { return ''; }, set 3.2e1(n) { var p = n; var p; } };
var sameName4a = { get ''() { return ''; }, set ""(n) { var p = n; var p; } };
var sameName5a = { get '\t'() { return ''; }, set '\t'(n) { var p = n; var p; } };
var sameName6a = { get 'a'() { return ''; }, set a(n) { var p = n; var p; } };
// PropertyName CallSignature{FunctionBody} is equivalent to PropertyName:function CallSignature{FunctionBody}
var callSig1 = { num: function (n) { return ''; } };
var callSig1;
var callSig2 = { num: function (n) { return ''; } };
var callSig2;
var callSig3 = { num: function (n) { return ''; } };
var callSig3;
// Get accessor only, type of the property is the annotated return type of the get accessor
var getter1 = { get x() { return undefined; } };
var getter1;
// Get accessor only, type of the property is the inferred return type of the get accessor
var getter2 = { get x() { return ''; } };
var getter2;
// Set accessor only, type of the property is the param type of the set accessor
var setter1 = { set x(n) { } };
var setter1;
// Set accessor only, type of the property is Any for an unannotated set accessor
var setter2 = { set x(n) { } };
var setter2;
var anyVar;
// Get and set accessor with matching type annotations
var sameType1 = { get x() { return undefined; }, set x(n) { } };
var sameType2 = { get x() { return undefined; }, set x(n) { } };
var sameType3 = { get x() { return undefined; }, set x(n) { } };
var sameType4 = { get x() { return undefined; }, set x(n) { } };
// Type of unannotated get accessor return type is the type annotation of the set accessor param
var setParamType1 = {
set n(x) { },
get n() {
return function (t) {
var p;
var p = t;
};
}
};
var setParamType2 = {
get n() {
return function (t) {
var p;
var p = t;
};
},
set n(x) { }
};
// Type of unannotated set accessor parameter is the return type annotation of the get accessor
var getParamType1 = {
set n(x) {
var y = x;
var y;
},
get n() { return ''; }
};
var getParamType2 = {
get n() { return ''; },
set n(x) {
var y = x;
var y;
}
};
// Type of unannotated accessors is the inferred return type of the get accessor
var getParamType3 = {
get n() { return ''; },
set n(x) {
var y = x;
var y;
}
};
|