JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ TsTypeAliasDeclaration { type_token: TYPE_KW@0..5 "type" [] [Whitespace(" ")], binding_identifier: TsIdentifierBinding { name_token: IDENT@5..7 "C" [] [Whitespace(" ")], }, type_parameters: missing (optional), eq_token: EQ@7..9 "=" [] [Whitespace(" ")], ty: TsObjectType { l_curly_token: L_CURLY@9..11 "{" [] [Whitespace(" ")], members: TsTypeMemberList [ TsConstructSignatureTypeMember { new_token: NEW_KW@11..15 "new" [] [Whitespace(" ")], type_parameters: TsTypeParameters { l_angle_token: L_ANGLE@15..16 "<" [] [], items: TsTypeParameterList [], r_angle_token: R_ANGLE@16..17 ">" [] [], }, parameters: JsParameters { l_paren_token: L_PAREN@17..18 "(" [] [], items: JsParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@18..19 "a" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@19..21 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@21..22 "A" [] [], }, type_arguments: missing (optional), }, }, initializer: missing (optional), }, COMMA@22..24 "," [] [Whitespace(" ")], JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@24..25 "b" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@25..27 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@27..28 "B" [] [], }, type_arguments: missing (optional), }, }, initializer: missing (optional), }, ], r_paren_token: R_PAREN@28..29 ")" [] [], }, type_annotation: TsTypeAnnotation { colon_token: COLON@29..31 ":" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@31..38 "string" [] [Whitespace(" ")], }, }, separator_token: missing (optional), }, ], r_curly_token: R_CURLY@38..39 "}" [] [], }, semicolon_token: missing (optional), }, ], eof_token: EOF@39..40 "" [Newline("\n")] [], } 0: JS_MODULE@0..40 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..39 0: TS_TYPE_ALIAS_DECLARATION@0..39 0: TYPE_KW@0..5 "type" [] [Whitespace(" ")] 1: TS_IDENTIFIER_BINDING@5..7 0: IDENT@5..7 "C" [] [Whitespace(" ")] 2: (empty) 3: EQ@7..9 "=" [] [Whitespace(" ")] 4: TS_OBJECT_TYPE@9..39 0: L_CURLY@9..11 "{" [] [Whitespace(" ")] 1: TS_TYPE_MEMBER_LIST@11..38 0: TS_CONSTRUCT_SIGNATURE_TYPE_MEMBER@11..38 0: NEW_KW@11..15 "new" [] [Whitespace(" ")] 1: TS_TYPE_PARAMETERS@15..17 0: L_ANGLE@15..16 "<" [] [] 1: TS_TYPE_PARAMETER_LIST@16..16 2: R_ANGLE@16..17 ">" [] [] 2: JS_PARAMETERS@17..29 0: L_PAREN@17..18 "(" [] [] 1: JS_PARAMETER_LIST@18..28 0: JS_FORMAL_PARAMETER@18..22 0: JS_DECORATOR_LIST@18..18 1: JS_IDENTIFIER_BINDING@18..19 0: IDENT@18..19 "a" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@19..22 0: COLON@19..21 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@21..22 0: JS_REFERENCE_IDENTIFIER@21..22 0: IDENT@21..22 "A" [] [] 1: (empty) 4: (empty) 1: COMMA@22..24 "," [] [Whitespace(" ")] 2: JS_FORMAL_PARAMETER@24..28 0: JS_DECORATOR_LIST@24..24 1: JS_IDENTIFIER_BINDING@24..25 0: IDENT@24..25 "b" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@25..28 0: COLON@25..27 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@27..28 0: JS_REFERENCE_IDENTIFIER@27..28 0: IDENT@27..28 "B" [] [] 1: (empty) 4: (empty) 2: R_PAREN@28..29 ")" [] [] 3: TS_TYPE_ANNOTATION@29..38 0: COLON@29..31 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@31..38 0: STRING_KW@31..38 "string" [] [Whitespace(" ")] 4: (empty) 2: R_CURLY@38..39 "}" [] [] 5: (empty) 4: EOF@39..40 "" [Newline("\n")] [] -- ts_construct_signature_member_err.ts:1:17 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected a type parameter but instead found '>'. > 1 │ type C = { new <>(a: A, b: B): string } │ ^ 2 │ i Expected a type parameter here. > 1 │ type C = { new <>(a: A, b: B): string } │ ^ 2 │ -- type C = { new <>(a: A, b: B): string }