1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "ClassDeclaration", 6 "definition": { 7 "id": { 8 "type": "Identifier", 9 "name": "A", 10 "decorators": [], 11 "loc": { 12 "start": { 13 "line": 16, 14 "column": 7 15 }, 16 "end": { 17 "line": 16, 18 "column": 8 19 } 20 } 21 }, 22 "typeParameters": { 23 "type": "TSTypeParameterDeclaration", 24 "params": [ 25 { 26 "type": "TSTypeParameter", 27 "name": { 28 "type": "Identifier", 29 "name": "T", 30 "decorators": [], 31 "loc": { 32 "start": { 33 "line": 16, 34 "column": 10 35 }, 36 "end": { 37 "line": 16, 38 "column": 11 39 } 40 } 41 }, 42 "loc": { 43 "start": { 44 "line": 16, 45 "column": 10 46 }, 47 "end": { 48 "line": 16, 49 "column": 12 50 } 51 } 52 } 53 ], 54 "loc": { 55 "start": { 56 "line": 16, 57 "column": 9 58 }, 59 "end": { 60 "line": 16, 61 "column": 12 62 } 63 } 64 }, 65 "superClass": null, 66 "implements": [], 67 "constructor": { 68 "type": "MethodDefinition", 69 "key": { 70 "type": "Identifier", 71 "name": "constructor", 72 "decorators": [], 73 "loc": { 74 "start": { 75 "line": 1, 76 "column": 1 77 }, 78 "end": { 79 "line": 1, 80 "column": 1 81 } 82 } 83 }, 84 "kind": "constructor", 85 "static": false, 86 "optional": false, 87 "computed": false, 88 "value": { 89 "type": "FunctionExpression", 90 "function": { 91 "type": "ScriptFunction", 92 "id": null, 93 "generator": false, 94 "async": false, 95 "expression": false, 96 "params": [], 97 "body": { 98 "type": "BlockStatement", 99 "statements": [], 100 "loc": { 101 "start": { 102 "line": 1, 103 "column": 1 104 }, 105 "end": { 106 "line": 1, 107 "column": 1 108 } 109 } 110 }, 111 "loc": { 112 "start": { 113 "line": 1, 114 "column": 1 115 }, 116 "end": { 117 "line": 1, 118 "column": 1 119 } 120 } 121 }, 122 "loc": { 123 "start": { 124 "line": 1, 125 "column": 1 126 }, 127 "end": { 128 "line": 1, 129 "column": 1 130 } 131 } 132 }, 133 "overloads": [], 134 "decorators": [], 135 "loc": { 136 "start": { 137 "line": 16, 138 "column": 1 139 }, 140 "end": { 141 "line": 17, 142 "column": 2 143 } 144 } 145 }, 146 "body": [], 147 "indexSignatures": [], 148 "loc": { 149 "start": { 150 "line": 16, 151 "column": 13 152 }, 153 "end": { 154 "line": 17, 155 "column": 2 156 } 157 } 158 }, 159 "decorators": [], 160 "loc": { 161 "start": { 162 "line": 16, 163 "column": 1 164 }, 165 "end": { 166 "line": 17, 167 "column": 2 168 } 169 } 170 }, 171 { 172 "type": "VariableDeclaration", 173 "declarations": [ 174 { 175 "type": "VariableDeclarator", 176 "id": { 177 "type": "Identifier", 178 "name": "a", 179 "typeAnnotation": { 180 "type": "TSTypeReference", 181 "typeName": { 182 "type": "Identifier", 183 "name": "A", 184 "decorators": [], 185 "loc": { 186 "start": { 187 "line": 19, 188 "column": 8 189 }, 190 "end": { 191 "line": 19, 192 "column": 9 193 } 194 } 195 }, 196 "typeParameters": { 197 "type": "TSTypeParameterInstantiation", 198 "params": [ 199 { 200 "type": "TSFunctionType", 201 "params": [], 202 "typeParameters": { 203 "type": "TSTypeParameterDeclaration", 204 "params": [ 205 { 206 "type": "TSTypeParameter", 207 "name": { 208 "type": "Identifier", 209 "name": "T", 210 "decorators": [], 211 "loc": { 212 "start": { 213 "line": 19, 214 "column": 11 215 }, 216 "end": { 217 "line": 19, 218 "column": 12 219 } 220 } 221 }, 222 "loc": { 223 "start": { 224 "line": 19, 225 "column": 11 226 }, 227 "end": { 228 "line": 19, 229 "column": 13 230 } 231 } 232 } 233 ], 234 "loc": { 235 "start": { 236 "line": 19, 237 "column": 10 238 }, 239 "end": { 240 "line": 19, 241 "column": 13 242 } 243 } 244 }, 245 "returnType": { 246 "type": "TSTypeLiteral", 247 "members": [], 248 "loc": { 249 "start": { 250 "line": 19, 251 "column": 19 252 }, 253 "end": { 254 "line": 19, 255 "column": 21 256 } 257 } 258 }, 259 "loc": { 260 "start": { 261 "line": 19, 262 "column": 10 263 }, 264 "end": { 265 "line": 19, 266 "column": 21 267 } 268 } 269 } 270 ], 271 "loc": { 272 "start": { 273 "line": 19, 274 "column": 8 275 }, 276 "end": { 277 "line": 19, 278 "column": 22 279 } 280 } 281 }, 282 "loc": { 283 "start": { 284 "line": 19, 285 "column": 8 286 }, 287 "end": { 288 "line": 19, 289 "column": 9 290 } 291 } 292 }, 293 "decorators": [], 294 "loc": { 295 "start": { 296 "line": 19, 297 "column": 5 298 }, 299 "end": { 300 "line": 19, 301 "column": 6 302 } 303 } 304 }, 305 "init": { 306 "type": "NewExpression", 307 "callee": { 308 "type": "Identifier", 309 "name": "A", 310 "decorators": [], 311 "loc": { 312 "start": { 313 "line": 19, 314 "column": 29 315 }, 316 "end": { 317 "line": 19, 318 "column": 30 319 } 320 } 321 }, 322 "typeParameters": { 323 "type": "TSTypeParameterInstantiation", 324 "params": [ 325 { 326 "type": "TSFunctionType", 327 "params": [], 328 "typeParameters": { 329 "type": "TSTypeParameterDeclaration", 330 "params": [ 331 { 332 "type": "TSTypeParameter", 333 "name": { 334 "type": "Identifier", 335 "name": "T", 336 "decorators": [], 337 "loc": { 338 "start": { 339 "line": 19, 340 "column": 32 341 }, 342 "end": { 343 "line": 19, 344 "column": 33 345 } 346 } 347 }, 348 "loc": { 349 "start": { 350 "line": 19, 351 "column": 32 352 }, 353 "end": { 354 "line": 19, 355 "column": 34 356 } 357 } 358 } 359 ], 360 "loc": { 361 "start": { 362 "line": 19, 363 "column": 31 364 }, 365 "end": { 366 "line": 19, 367 "column": 34 368 } 369 } 370 }, 371 "returnType": { 372 "type": "TSTypeLiteral", 373 "members": [], 374 "loc": { 375 "start": { 376 "line": 19, 377 "column": 40 378 }, 379 "end": { 380 "line": 19, 381 "column": 42 382 } 383 } 384 }, 385 "loc": { 386 "start": { 387 "line": 19, 388 "column": 31 389 }, 390 "end": { 391 "line": 19, 392 "column": 42 393 } 394 } 395 } 396 ], 397 "loc": { 398 "start": { 399 "line": 19, 400 "column": 30 401 }, 402 "end": { 403 "line": 19, 404 "column": 43 405 } 406 } 407 }, 408 "arguments": [], 409 "loc": { 410 "start": { 411 "line": 19, 412 "column": 25 413 }, 414 "end": { 415 "line": 19, 416 "column": 45 417 } 418 } 419 }, 420 "loc": { 421 "start": { 422 "line": 19, 423 "column": 5 424 }, 425 "end": { 426 "line": 19, 427 "column": 45 428 } 429 } 430 } 431 ], 432 "kind": "var", 433 "loc": { 434 "start": { 435 "line": 19, 436 "column": 1 437 }, 438 "end": { 439 "line": 19, 440 "column": 45 441 } 442 } 443 } 444 ], 445 "loc": { 446 "start": { 447 "line": 1, 448 "column": 1 449 }, 450 "end": { 451 "line": 21, 452 "column": 1 453 } 454 } 455} 456