From 4d19408e9bfeadf2edfbdc68defdc66fcd002463 Mon Sep 17 00:00:00 2001 From: fisker Date: Fri, 9 Jan 2026 19:04:01 +0800 Subject: [PATCH] refactor: `_ParseAST.isAssignmentOperator` to type guard Update `_ParseAST.isAssignmentOperator` to type guard --- packages/compiler/src/expression_parser/ast.ts | 12 +++++++++++- packages/compiler/src/expression_parser/parser.ts | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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); }