JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ TsInterfaceDeclaration { interface_token: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")], id: TsIdentifierBinding { name_token: IDENT@10..11 "A" [] [], }, type_parameters: TsTypeParameters { l_angle_token: L_ANGLE@11..12 "<" [] [], items: TsTypeParameterList [ TsTypeParameter { modifiers: TsTypeParameterModifierList [], name: TsTypeParameterName { ident_token: IDENT@12..16 "Prop" [] [], }, constraint: missing (optional), default: missing (optional), }, ], r_angle_token: R_ANGLE@16..18 ">" [] [Whitespace(" ")], }, extends_clause: missing (optional), l_curly_token: L_CURLY@18..20 "{" [] [Whitespace(" ")], members: TsTypeMemberList [ TsPropertySignatureTypeMember { readonly_token: missing (optional), name: JsLiteralMemberName { value: IDENT@20..24 "prop" [] [], }, optional_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@24..26 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@26..31 "Prop" [] [Whitespace(" ")], }, type_arguments: missing (optional), }, }, separator_token: missing (optional), }, ], r_curly_token: R_CURLY@31..32 "}" [] [], }, TsInterfaceDeclaration { interface_token: INTERFACE_KW@32..43 "interface" [Newline("\n")] [Whitespace(" ")], id: TsIdentifierBinding { name_token: IDENT@43..45 "B" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: TsExtendsClause { extends_token: EXTENDS_KW@45..53 "extends" [] [Whitespace(" ")], types: TsTypeList [ TsNameWithTypeArguments { name: JsReferenceIdentifier { value_token: IDENT@53..54 "A" [] [], }, type_arguments: TsTypeArguments { l_angle_token: L_ANGLE@54..55 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsStringType { string_token: STRING_KW@55..61 "string" [] [], }, ], r_angle_token: R_ANGLE@61..63 ">" [] [Whitespace(" ")], }, }, ], }, l_curly_token: L_CURLY@63..64 "{" [] [], members: TsTypeMemberList [], r_curly_token: R_CURLY@64..65 "}" [] [], }, TsInterfaceDeclaration { interface_token: INTERFACE_KW@65..76 "interface" [Newline("\n")] [Whitespace(" ")], id: TsIdentifierBinding { name_token: IDENT@76..78 "C" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: TsExtendsClause { extends_token: EXTENDS_KW@78..86 "extends" [] [Whitespace(" ")], types: TsTypeList [ TsNameWithTypeArguments { name: JsReferenceIdentifier { value_token: IDENT@86..87 "A" [] [], }, type_arguments: TsTypeArguments { l_angle_token: L_ANGLE@87..88 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { number_token: NUMBER_KW@88..94 "number" [] [], }, ], r_angle_token: R_ANGLE@94..95 ">" [] [], }, }, COMMA@95..97 "," [] [Whitespace(" ")], TsNameWithTypeArguments { name: JsReferenceIdentifier { value_token: IDENT@97..99 "B" [] [Whitespace(" ")], }, type_arguments: missing (optional), }, ], }, l_curly_token: L_CURLY@99..100 "{" [] [], members: TsTypeMemberList [], r_curly_token: R_CURLY@100..101 "}" [] [], }, ], eof_token: EOF@101..102 "" [Newline("\n")] [], } 0: JS_MODULE@0..102 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..101 0: TS_INTERFACE_DECLARATION@0..32 0: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")] 1: TS_IDENTIFIER_BINDING@10..11 0: IDENT@10..11 "A" [] [] 2: TS_TYPE_PARAMETERS@11..18 0: L_ANGLE@11..12 "<" [] [] 1: TS_TYPE_PARAMETER_LIST@12..16 0: TS_TYPE_PARAMETER@12..16 0: TS_TYPE_PARAMETER_MODIFIER_LIST@12..12 1: TS_TYPE_PARAMETER_NAME@12..16 0: IDENT@12..16 "Prop" [] [] 2: (empty) 3: (empty) 2: R_ANGLE@16..18 ">" [] [Whitespace(" ")] 3: (empty) 4: L_CURLY@18..20 "{" [] [Whitespace(" ")] 5: TS_TYPE_MEMBER_LIST@20..31 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@20..31 0: (empty) 1: JS_LITERAL_MEMBER_NAME@20..24 0: IDENT@20..24 "prop" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@24..31 0: COLON@24..26 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@26..31 0: JS_REFERENCE_IDENTIFIER@26..31 0: IDENT@26..31 "Prop" [] [Whitespace(" ")] 1: (empty) 4: (empty) 6: R_CURLY@31..32 "}" [] [] 1: TS_INTERFACE_DECLARATION@32..65 0: INTERFACE_KW@32..43 "interface" [Newline("\n")] [Whitespace(" ")] 1: TS_IDENTIFIER_BINDING@43..45 0: IDENT@43..45 "B" [] [Whitespace(" ")] 2: (empty) 3: TS_EXTENDS_CLAUSE@45..63 0: EXTENDS_KW@45..53 "extends" [] [Whitespace(" ")] 1: TS_TYPE_LIST@53..63 0: TS_NAME_WITH_TYPE_ARGUMENTS@53..63 0: JS_REFERENCE_IDENTIFIER@53..54 0: IDENT@53..54 "A" [] [] 1: TS_TYPE_ARGUMENTS@54..63 0: L_ANGLE@54..55 "<" [] [] 1: TS_TYPE_ARGUMENT_LIST@55..61 0: TS_STRING_TYPE@55..61 0: STRING_KW@55..61 "string" [] [] 2: R_ANGLE@61..63 ">" [] [Whitespace(" ")] 4: L_CURLY@63..64 "{" [] [] 5: TS_TYPE_MEMBER_LIST@64..64 6: R_CURLY@64..65 "}" [] [] 2: TS_INTERFACE_DECLARATION@65..101 0: INTERFACE_KW@65..76 "interface" [Newline("\n")] [Whitespace(" ")] 1: TS_IDENTIFIER_BINDING@76..78 0: IDENT@76..78 "C" [] [Whitespace(" ")] 2: (empty) 3: TS_EXTENDS_CLAUSE@78..99 0: EXTENDS_KW@78..86 "extends" [] [Whitespace(" ")] 1: TS_TYPE_LIST@86..99 0: TS_NAME_WITH_TYPE_ARGUMENTS@86..95 0: JS_REFERENCE_IDENTIFIER@86..87 0: IDENT@86..87 "A" [] [] 1: TS_TYPE_ARGUMENTS@87..95 0: L_ANGLE@87..88 "<" [] [] 1: TS_TYPE_ARGUMENT_LIST@88..94 0: TS_NUMBER_TYPE@88..94 0: NUMBER_KW@88..94 "number" [] [] 2: R_ANGLE@94..95 ">" [] [] 1: COMMA@95..97 "," [] [Whitespace(" ")] 2: TS_NAME_WITH_TYPE_ARGUMENTS@97..99 0: JS_REFERENCE_IDENTIFIER@97..99 0: IDENT@97..99 "B" [] [Whitespace(" ")] 1: (empty) 4: L_CURLY@99..100 "{" [] [] 5: TS_TYPE_MEMBER_LIST@100..100 6: R_CURLY@100..101 "}" [] [] 4: EOF@101..102 "" [Newline("\n")] []