{ "type": "Script", "span": { "start": 37, "end": 782, "ctxt": 0 }, "body": [ { "type": "VariableDeclaration", "span": { "start": 37, "end": 51, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 43, "end": 50, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 43, "end": 44, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "init": { "type": "StringLiteral", "span": { "start": 47, "end": 50, "ctxt": 0 }, "value": "a", "raw": "'a'" }, "definite": false } ] }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 62, "end": 64, "ctxt": 0 }, "value": "f1", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 101, "end": 107, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 101, "end": 107, "ctxt": 0 }, "value": "obj", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 104, "end": 107, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 106, "end": 107, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 106, "end": 107, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 53, "end": 312, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 109, "end": 312, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 115, "end": 135, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 119, "end": 134, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 119, "end": 128, "ctxt": 0 }, "properties": [ { "type": "RestElement", "span": { "start": 121, "end": 126, "ctxt": 0 }, "rest": { "start": 121, "end": 124, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 124, "end": 126, "ctxt": 0 }, "value": "r0", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 131, "end": 134, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 140, "end": 167, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 144, "end": 166, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 144, "end": 160, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Identifier", "span": { "start": 146, "end": 147, "ctxt": 0 }, "value": "a", "optional": false }, "value": { "type": "Identifier", "span": { "start": 149, "end": 151, "ctxt": 0 }, "value": "a1", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 153, "end": 158, "ctxt": 0 }, "rest": { "start": 153, "end": 156, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 156, "end": 158, "ctxt": 0 }, "value": "r1", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 163, "end": 166, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 172, "end": 206, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 176, "end": 205, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 176, "end": 199, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Identifier", "span": { "start": 178, "end": 179, "ctxt": 0 }, "value": "a", "optional": false }, "value": { "type": "Identifier", "span": { "start": 181, "end": 183, "ctxt": 0 }, "value": "a2", "optional": false, "typeAnnotation": null } }, { "type": "KeyValuePatternProperty", "key": { "type": "Identifier", "span": { "start": 185, "end": 186, "ctxt": 0 }, "value": "b", "optional": false }, "value": { "type": "Identifier", "span": { "start": 188, "end": 190, "ctxt": 0 }, "value": "b2", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 192, "end": 197, "ctxt": 0 }, "rest": { "start": 192, "end": 195, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 195, "end": 197, "ctxt": 0 }, "value": "r2", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 202, "end": 205, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 211, "end": 240, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 215, "end": 239, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 215, "end": 233, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "StringLiteral", "span": { "start": 217, "end": 220, "ctxt": 0 }, "value": "a", "raw": "'a'" }, "value": { "type": "Identifier", "span": { "start": 222, "end": 224, "ctxt": 0 }, "value": "a3", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 226, "end": 231, "ctxt": 0 }, "rest": { "start": 226, "end": 229, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 229, "end": 231, "ctxt": 0 }, "value": "r3", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 236, "end": 239, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 245, "end": 276, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 249, "end": 275, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 249, "end": 269, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 251, "end": 256, "ctxt": 0 }, "expression": { "type": "StringLiteral", "span": { "start": 252, "end": 255, "ctxt": 0 }, "value": "a", "raw": "'a'" } }, "value": { "type": "Identifier", "span": { "start": 258, "end": 260, "ctxt": 0 }, "value": "a4", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 262, "end": 267, "ctxt": 0 }, "rest": { "start": 262, "end": 265, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 265, "end": 267, "ctxt": 0 }, "value": "r4", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 272, "end": 275, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 281, "end": 310, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 285, "end": 309, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 285, "end": 303, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 287, "end": 290, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 288, "end": 289, "ctxt": 0 }, "value": "a", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 292, "end": 294, "ctxt": 0 }, "value": "a5", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 296, "end": 301, "ctxt": 0 }, "rest": { "start": 296, "end": 299, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 299, "end": 301, "ctxt": 0 }, "value": "r5", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 306, "end": 309, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 64, "end": 100, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 65, "end": 99, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 65, "end": 66, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeLiteral", "span": { "start": 75, "end": 99, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 77, "end": 87, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 77, "end": 78, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 78, "end": 86, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 80, "end": 86, "ctxt": 0 }, "kind": "string" } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 88, "end": 97, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 88, "end": 89, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 89, "end": 97, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 91, "end": 97, "ctxt": 0 }, "kind": "number" } }, "typeParams": null } ] }, "default": null } ] }, "returnType": null }, { "type": "VariableDeclaration", "span": { "start": 314, "end": 334, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 320, "end": 333, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 320, "end": 322, "ctxt": 0 }, "value": "sa", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 325, "end": 333, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 325, "end": 331, "ctxt": 0 }, "value": "Symbol", "optional": false }, "arguments": [], "typeArguments": null }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 335, "end": 355, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 341, "end": 354, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 341, "end": 343, "ctxt": 0 }, "value": "sb", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 346, "end": 354, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 346, "end": 352, "ctxt": 0 }, "value": "Symbol", "optional": false }, "arguments": [], "typeArguments": null }, "definite": false } ] }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 366, "end": 368, "ctxt": 0 }, "value": "f2", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 411, "end": 417, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 411, "end": 417, "ctxt": 0 }, "value": "obj", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 414, "end": 417, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 416, "end": 417, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 416, "end": 417, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 357, "end": 467, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 419, "end": 467, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 425, "end": 465, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 429, "end": 464, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 429, "end": 458, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 431, "end": 435, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 432, "end": 434, "ctxt": 0 }, "value": "sa", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 437, "end": 439, "ctxt": 0 }, "value": "a1", "optional": false, "typeAnnotation": null } }, { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 441, "end": 445, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 442, "end": 444, "ctxt": 0 }, "value": "sb", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 447, "end": 449, "ctxt": 0 }, "value": "b1", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 451, "end": 456, "ctxt": 0 }, "rest": { "start": 451, "end": 454, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 454, "end": 456, "ctxt": 0 }, "value": "r1", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 461, "end": 464, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 368, "end": 410, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 369, "end": 409, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 369, "end": 370, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeLiteral", "span": { "start": 379, "end": 409, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 381, "end": 394, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 382, "end": 384, "ctxt": 0 }, "value": "sa", "optional": false }, "computed": true, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 385, "end": 393, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 387, "end": 393, "ctxt": 0 }, "kind": "string" } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 395, "end": 407, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 396, "end": 398, "ctxt": 0 }, "value": "sb", "optional": false }, "computed": true, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 399, "end": 407, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 401, "end": 407, "ctxt": 0 }, "kind": "number" } }, "typeParams": null } ] }, "default": null } ] }, "returnType": null }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 478, "end": 480, "ctxt": 0 }, "value": "f3", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 524, "end": 530, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 524, "end": 530, "ctxt": 0 }, "value": "obj", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 527, "end": 530, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 529, "end": 530, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 529, "end": 530, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } }, { "type": "Parameter", "span": { "start": 532, "end": 538, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 532, "end": 538, "ctxt": 0 }, "value": "k1", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 534, "end": 538, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 536, "end": 538, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 536, "end": 538, "ctxt": 0 }, "value": "K1", "optional": false }, "typeParams": null } } } }, { "type": "Parameter", "span": { "start": 540, "end": 546, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 540, "end": 546, "ctxt": 0 }, "value": "k2", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 542, "end": 546, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 544, "end": 546, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 544, "end": 546, "ctxt": 0 }, "value": "K2", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 469, "end": 596, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 548, "end": 596, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 554, "end": 594, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 558, "end": 593, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 558, "end": 587, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 560, "end": 564, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 561, "end": 563, "ctxt": 0 }, "value": "k1", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 566, "end": 568, "ctxt": 0 }, "value": "a1", "optional": false, "typeAnnotation": null } }, { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 570, "end": 574, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 571, "end": 573, "ctxt": 0 }, "value": "k2", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 576, "end": 578, "ctxt": 0 }, "value": "a2", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 580, "end": 585, "ctxt": 0 }, "rest": { "start": 580, "end": 583, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 583, "end": 585, "ctxt": 0 }, "value": "r1", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 590, "end": 593, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 480, "end": 523, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 481, "end": 482, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 481, "end": 482, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 484, "end": 502, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 484, "end": 486, "ctxt": 0 }, "value": "K1", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeOperator", "span": { "start": 495, "end": 502, "ctxt": 0 }, "op": "keyof", "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 501, "end": 502, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 501, "end": 502, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "default": null }, { "type": "TsTypeParameter", "span": { "start": 504, "end": 522, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 504, "end": 506, "ctxt": 0 }, "value": "K2", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeOperator", "span": { "start": 515, "end": 522, "ctxt": 0 }, "op": "keyof", "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 521, "end": 522, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 521, "end": 522, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "default": null } ] }, "returnType": null }, { "type": "TsTypeAliasDeclaration", "span": { "start": 598, "end": 647, "ctxt": 0 }, "declare": false, "id": { "type": "Identifier", "span": { "start": 603, "end": 607, "ctxt": 0 }, "value": "Item", "optional": false }, "typeParams": null, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 610, "end": 646, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 612, "end": 622, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 612, "end": 613, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 613, "end": 621, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 615, "end": 621, "ctxt": 0 }, "kind": "string" } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 623, "end": 633, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 623, "end": 624, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 624, "end": 632, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 626, "end": 632, "ctxt": 0 }, "kind": "number" } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 634, "end": 644, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 634, "end": 635, "ctxt": 0 }, "value": "c", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 635, "end": 644, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 637, "end": 644, "ctxt": 0 }, "kind": "boolean" } }, "typeParams": null } ] } }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 658, "end": 660, "ctxt": 0 }, "value": "f4", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 707, "end": 716, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 707, "end": 716, "ctxt": 0 }, "value": "obj", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 710, "end": 716, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 712, "end": 716, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 712, "end": 716, "ctxt": 0 }, "value": "Item", "optional": false }, "typeParams": null } } } }, { "type": "Parameter", "span": { "start": 718, "end": 724, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 718, "end": 724, "ctxt": 0 }, "value": "k1", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 720, "end": 724, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 722, "end": 724, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 722, "end": 724, "ctxt": 0 }, "value": "K1", "optional": false }, "typeParams": null } } } }, { "type": "Parameter", "span": { "start": 726, "end": 732, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 726, "end": 732, "ctxt": 0 }, "value": "k2", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 728, "end": 732, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 730, "end": 732, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 730, "end": 732, "ctxt": 0 }, "value": "K2", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 649, "end": 782, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 734, "end": 782, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 740, "end": 780, "ctxt": 0 }, "kind": "let", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 744, "end": 779, "ctxt": 0 }, "id": { "type": "ObjectPattern", "span": { "start": 744, "end": 773, "ctxt": 0 }, "properties": [ { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 746, "end": 750, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 747, "end": 749, "ctxt": 0 }, "value": "k1", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 752, "end": 754, "ctxt": 0 }, "value": "a1", "optional": false, "typeAnnotation": null } }, { "type": "KeyValuePatternProperty", "key": { "type": "Computed", "span": { "start": 756, "end": 760, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 757, "end": 759, "ctxt": 0 }, "value": "k2", "optional": false } }, "value": { "type": "Identifier", "span": { "start": 762, "end": 764, "ctxt": 0 }, "value": "a2", "optional": false, "typeAnnotation": null } }, { "type": "RestElement", "span": { "start": 766, "end": 771, "ctxt": 0 }, "rest": { "start": 766, "end": 769, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 769, "end": 771, "ctxt": 0 }, "value": "r1", "optional": false, "typeAnnotation": null }, "typeAnnotation": null } ], "optional": false, "typeAnnotation": null }, "init": { "type": "Identifier", "span": { "start": 776, "end": 779, "ctxt": 0 }, "value": "obj", "optional": false }, "definite": false } ] } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 660, "end": 706, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 661, "end": 682, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 661, "end": 663, "ctxt": 0 }, "value": "K1", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeOperator", "span": { "start": 672, "end": 682, "ctxt": 0 }, "op": "keyof", "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 678, "end": 682, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 678, "end": 682, "ctxt": 0 }, "value": "Item", "optional": false }, "typeParams": null } }, "default": null }, { "type": "TsTypeParameter", "span": { "start": 684, "end": 705, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 684, "end": 686, "ctxt": 0 }, "value": "K2", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeOperator", "span": { "start": 695, "end": 705, "ctxt": 0 }, "op": "keyof", "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 701, "end": 705, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 701, "end": 705, "ctxt": 0 }, "value": "Item", "optional": false }, "typeParams": null } }, "default": null } ] }, "returnType": null } ], "interpreter": null }