diff --git a/packages/compiler/src/expression_parser/ast.ts b/packages/compiler/src/expression_parser/ast.ts index 099c40591a3..b351da8411d 100644 --- a/packages/compiler/src/expression_parser/ast.ts +++ b/packages/compiler/src/expression_parser/ast.ts @@ -268,7 +268,17 @@ export class Interpolation extends AST { } } -type AssignmentOperation = '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '**=' | '&&=' | '||=' | '??='; +export type AssignmentOperation = + | '=' + | '+=' + | '-=' + | '*=' + | '/=' + | '%=' + | '**=' + | '&&=' + | '||=' + | '??='; type BinaryOperation = | AssignmentOperation // Logical diff --git a/packages/compiler/src/expression_parser/parser.ts b/packages/compiler/src/expression_parser/parser.ts index a8e819e9534..f8b404be97f 100644 --- a/packages/compiler/src/expression_parser/parser.ts +++ b/packages/compiler/src/expression_parser/parser.ts @@ -56,6 +56,7 @@ import { Unary, VariableBinding, VoidExpression, + type AssignmentOperation, } from './ast'; import {EOF, Lexer, StringTokenKind, Token, TokenType} from './lexer'; export interface InterpolationPiece { @@ -730,7 +731,10 @@ class _ParseAST { } } - private isAssignmentOperator(token: Token): boolean { + private isAssignmentOperator(token: Token): token is Token & { + type: typeof TokenType.Operator; + strValue: AssignmentOperation; + } { return token.type === TokenType.Operator && Binary.isAssignmentOperation(token.strValue); }