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")] []