JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@0..4 "let" [] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@4..5 "x" [] [], }, variable_annotation: TsTypeAnnotation { colon_token: COLON@5..7 ":" [] [Whitespace(" ")], ty: TsAnyType { any_token: ANY_KW@7..11 "any" [] [Whitespace(" ")], }, }, initializer: JsInitializerClause { eq_token: EQ@11..13 "=" [] [Whitespace(" ")], expression: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@13..21 "\"string\"" [] [], }, }, }, ], }, semicolon_token: SEMICOLON@21..22 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@22..27 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@27..29 "y" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@29..31 "=" [] [Whitespace(" ")], expression: TsAsExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@31..33 "x" [] [Whitespace(" ")], }, }, as_token: AS_KW@33..36 "as" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@36..42 "string" [] [], }, }, }, }, ], }, semicolon_token: SEMICOLON@42..43 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@43..48 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@48..50 "z" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@50..52 "=" [] [Whitespace(" ")], expression: TsAsExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@52..54 "x" [] [Whitespace(" ")], }, }, as_token: AS_KW@54..57 "as" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@57..62 "const" [] [], }, type_arguments: missing (optional), }, }, }, }, ], }, semicolon_token: SEMICOLON@62..63 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@63..68 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@68..89 "not_an_as_expression" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@89..91 "=" [] [Whitespace(" ")], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@91..92 "x" [] [], }, }, }, }, ], }, semicolon_token: missing (optional), }, JsExpressionStatement { expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@92..95 "as" [Newline("\n")] [], }, }, semicolon_token: SEMICOLON@95..96 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@96..101 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@101..112 "precedence" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@112..114 "=" [] [Whitespace(" ")], expression: TsAsExpression { expression: TsAsExpression { expression: JsBinaryExpression { left: TsAsExpression { expression: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@114..122 "\"hello\"" [] [Whitespace(" ")], }, as_token: AS_KW@122..125 "as" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@125..131 "const" [] [Whitespace(" ")], }, type_arguments: missing (optional), }, }, operator_token: PLUS@131..133 "+" [] [Whitespace(" ")], right: JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@133..135 "3" [] [Whitespace(" ")], }, }, as_token: AS_KW@135..138 "as" [] [Whitespace(" ")], ty: TsNumberType { number_token: NUMBER_KW@138..145 "number" [] [Whitespace(" ")], }, }, as_token: AS_KW@145..148 "as" [] [Whitespace(" ")], ty: TsNumberType { number_token: NUMBER_KW@148..154 "number" [] [], }, }, }, }, ], }, semicolon_token: SEMICOLON@154..155 ";" [] [], }, ], eof_token: EOF@155..156 "" [Newline("\n")] [], } 0: JS_MODULE@0..156 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..155 0: JS_VARIABLE_STATEMENT@0..22 0: JS_VARIABLE_DECLARATION@0..21 0: (empty) 1: LET_KW@0..4 "let" [] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@4..21 0: JS_VARIABLE_DECLARATOR@4..21 0: JS_IDENTIFIER_BINDING@4..5 0: IDENT@4..5 "x" [] [] 1: TS_TYPE_ANNOTATION@5..11 0: COLON@5..7 ":" [] [Whitespace(" ")] 1: TS_ANY_TYPE@7..11 0: ANY_KW@7..11 "any" [] [Whitespace(" ")] 2: JS_INITIALIZER_CLAUSE@11..21 0: EQ@11..13 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@13..21 0: JS_STRING_LITERAL@13..21 "\"string\"" [] [] 1: SEMICOLON@21..22 ";" [] [] 1: JS_VARIABLE_STATEMENT@22..43 0: JS_VARIABLE_DECLARATION@22..42 0: (empty) 1: LET_KW@22..27 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@27..42 0: JS_VARIABLE_DECLARATOR@27..42 0: JS_IDENTIFIER_BINDING@27..29 0: IDENT@27..29 "y" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@29..42 0: EQ@29..31 "=" [] [Whitespace(" ")] 1: TS_AS_EXPRESSION@31..42 0: JS_IDENTIFIER_EXPRESSION@31..33 0: JS_REFERENCE_IDENTIFIER@31..33 0: IDENT@31..33 "x" [] [Whitespace(" ")] 1: AS_KW@33..36 "as" [] [Whitespace(" ")] 2: TS_STRING_TYPE@36..42 0: STRING_KW@36..42 "string" [] [] 1: SEMICOLON@42..43 ";" [] [] 2: JS_VARIABLE_STATEMENT@43..63 0: JS_VARIABLE_DECLARATION@43..62 0: (empty) 1: LET_KW@43..48 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@48..62 0: JS_VARIABLE_DECLARATOR@48..62 0: JS_IDENTIFIER_BINDING@48..50 0: IDENT@48..50 "z" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@50..62 0: EQ@50..52 "=" [] [Whitespace(" ")] 1: TS_AS_EXPRESSION@52..62 0: JS_IDENTIFIER_EXPRESSION@52..54 0: JS_REFERENCE_IDENTIFIER@52..54 0: IDENT@52..54 "x" [] [Whitespace(" ")] 1: AS_KW@54..57 "as" [] [Whitespace(" ")] 2: TS_REFERENCE_TYPE@57..62 0: JS_REFERENCE_IDENTIFIER@57..62 0: IDENT@57..62 "const" [] [] 1: (empty) 1: SEMICOLON@62..63 ";" [] [] 3: JS_VARIABLE_STATEMENT@63..92 0: JS_VARIABLE_DECLARATION@63..92 0: (empty) 1: LET_KW@63..68 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@68..92 0: JS_VARIABLE_DECLARATOR@68..92 0: JS_IDENTIFIER_BINDING@68..89 0: IDENT@68..89 "not_an_as_expression" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@89..92 0: EQ@89..91 "=" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@91..92 0: JS_REFERENCE_IDENTIFIER@91..92 0: IDENT@91..92 "x" [] [] 1: (empty) 4: JS_EXPRESSION_STATEMENT@92..96 0: JS_IDENTIFIER_EXPRESSION@92..95 0: JS_REFERENCE_IDENTIFIER@92..95 0: IDENT@92..95 "as" [Newline("\n")] [] 1: SEMICOLON@95..96 ";" [] [] 5: JS_VARIABLE_STATEMENT@96..155 0: JS_VARIABLE_DECLARATION@96..154 0: (empty) 1: LET_KW@96..101 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@101..154 0: JS_VARIABLE_DECLARATOR@101..154 0: JS_IDENTIFIER_BINDING@101..112 0: IDENT@101..112 "precedence" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@112..154 0: EQ@112..114 "=" [] [Whitespace(" ")] 1: TS_AS_EXPRESSION@114..154 0: TS_AS_EXPRESSION@114..145 0: JS_BINARY_EXPRESSION@114..135 0: TS_AS_EXPRESSION@114..131 0: JS_STRING_LITERAL_EXPRESSION@114..122 0: JS_STRING_LITERAL@114..122 "\"hello\"" [] [Whitespace(" ")] 1: AS_KW@122..125 "as" [] [Whitespace(" ")] 2: TS_REFERENCE_TYPE@125..131 0: JS_REFERENCE_IDENTIFIER@125..131 0: IDENT@125..131 "const" [] [Whitespace(" ")] 1: (empty) 1: PLUS@131..133 "+" [] [Whitespace(" ")] 2: JS_NUMBER_LITERAL_EXPRESSION@133..135 0: JS_NUMBER_LITERAL@133..135 "3" [] [Whitespace(" ")] 1: AS_KW@135..138 "as" [] [Whitespace(" ")] 2: TS_NUMBER_TYPE@138..145 0: NUMBER_KW@138..145 "number" [] [Whitespace(" ")] 1: AS_KW@145..148 "as" [] [Whitespace(" ")] 2: TS_NUMBER_TYPE@148..154 0: NUMBER_KW@148..154 "number" [] [] 1: SEMICOLON@154..155 ";" [] [] 4: EOF@155..156 "" [Newline("\n")] []