From 6dc29b3bf780ec8d3e999be7bfcae0d34ee6a668 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 15 Jul 2025 16:30:56 +0200 Subject: [PATCH] refactor(core): expose function to assert type of variables (#62648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the `ɵassertType` function that will be used during type checking to assert the type of a value. PR Close #62648 --- packages/compiler/src/render3/r3_identifiers.ts | 1 + packages/core/src/core_private_export.ts | 1 + packages/core/src/type_checking.ts | 13 +++++++++++++ packages/core/test/render3/jit_environment_spec.ts | 1 + 4 files changed, 16 insertions(+) create mode 100644 packages/core/src/type_checking.ts diff --git a/packages/compiler/src/render3/r3_identifiers.ts b/packages/compiler/src/render3/r3_identifiers.ts index 46d5355a3b1..687323133ab 100644 --- a/packages/compiler/src/render3/r3_identifiers.ts +++ b/packages/compiler/src/render3/r3_identifiers.ts @@ -469,4 +469,5 @@ export class Identifiers { static InputSignalBrandWriteType = {name: 'ɵINPUT_SIGNAL_BRAND_WRITE_TYPE', moduleName: CORE}; static UnwrapDirectiveSignalInputs = {name: 'ɵUnwrapDirectiveSignalInputs', moduleName: CORE}; static unwrapWritableSignal = {name: 'ɵunwrapWritableSignal', moduleName: CORE}; + static assertType = {name: 'ɵassertType', moduleName: CORE}; } diff --git a/packages/core/src/core_private_export.ts b/packages/core/src/core_private_export.ts index aa5fb9842b3..cb21a7b7c84 100644 --- a/packages/core/src/core_private_export.ts +++ b/packages/core/src/core_private_export.ts @@ -171,3 +171,4 @@ export {getClosestComponentName as ɵgetClosestComponentName} from './internal/g export {getComponentDef as ɵgetComponentDef} from './render3/def_getters'; export {DEHYDRATED_BLOCK_REGISTRY as ɵDEHYDRATED_BLOCK_REGISTRY} from './defer/registry'; export {TimerScheduler as ɵTimerScheduler} from './defer/timer_scheduler'; +export {ɵassertType} from './type_checking'; diff --git a/packages/core/src/type_checking.ts b/packages/core/src/type_checking.ts new file mode 100644 index 00000000000..f2ed5ec9733 --- /dev/null +++ b/packages/core/src/type_checking.ts @@ -0,0 +1,13 @@ +/*! + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +/** + * Utility function used during template type checking to assert that a value is of a certain type. + * @codeGenApi + */ +export function ɵassertType(value: unknown): asserts value is T {} diff --git a/packages/core/test/render3/jit_environment_spec.ts b/packages/core/test/render3/jit_environment_spec.ts index 19258b9a20d..87db419d252 100644 --- a/packages/core/test/render3/jit_environment_spec.ts +++ b/packages/core/test/render3/jit_environment_spec.ts @@ -34,6 +34,7 @@ const AOT_ONLY = new Set([ 'ɵINPUT_SIGNAL_BRAND_WRITE_TYPE', 'ɵUnwrapDirectiveSignalInputs', 'ɵunwrapWritableSignal', + 'ɵassertType', ]); /**