mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
refactor(core): move signal toString to primitives (#60365)
This change pushes the toString implementation of signal getters down to the primitives package so it can be shared with other frameworks. Closes #59990 PR Close #60365
This commit is contained in:
parent
4a107ed7af
commit
76c60a609f
3 changed files with 27 additions and 0 deletions
|
|
@ -19,6 +19,10 @@ import {
|
|||
runPostProducerCreatedFn,
|
||||
} from './graph';
|
||||
|
||||
// Required as the signals library is in a separate package, so we need to explicitly ensure the
|
||||
// global `ngDevMode` type is defined.
|
||||
declare const ngDevMode: boolean | undefined;
|
||||
|
||||
/**
|
||||
* A computation, which derives a value from a declarative reactive expression.
|
||||
*
|
||||
|
|
@ -76,8 +80,15 @@ export function createComputed<T>(
|
|||
|
||||
return node.value;
|
||||
};
|
||||
|
||||
(computed as ComputedGetter<T>)[SIGNAL] = node;
|
||||
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
||||
const debugName = node.debugName ? ' (' + node.debugName + ')' : '';
|
||||
computed.toString = () => `[Computed${debugName}: ${node.value}]`;
|
||||
}
|
||||
|
||||
runPostProducerCreatedFn(node);
|
||||
|
||||
return computed as unknown as ComputedGetter<T>;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@ import {
|
|||
} from './graph';
|
||||
import {signalSetFn, signalUpdateFn} from './signal';
|
||||
|
||||
// Required as the signals library is in a separate package, so we need to explicitly ensure the
|
||||
// global `ngDevMode` type is defined.
|
||||
declare const ngDevMode: boolean | undefined;
|
||||
|
||||
export type ComputationFn<S, D> = (source: S, previous?: {source: S; value: D}) => D;
|
||||
|
||||
export interface LinkedSignalNode<S, D> extends ReactiveNode {
|
||||
|
|
@ -87,7 +91,13 @@ export function createLinkedSignal<S, D>(
|
|||
|
||||
const getter = linkedSignalGetter as LinkedSignalGetter<S, D>;
|
||||
getter[SIGNAL] = node;
|
||||
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
||||
const debugName = node.debugName ? ' (' + node.debugName + ')' : '';
|
||||
getter.toString = () => `[LinkedSignal${debugName}: ${node.value}]`;
|
||||
}
|
||||
|
||||
runPostProducerCreatedFn(node);
|
||||
|
||||
return getter;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -59,7 +59,13 @@ export function createSignal<T>(initialValue: T, equal?: ValueEqualityFn<T>): Si
|
|||
return node.value;
|
||||
}) as SignalGetter<T>;
|
||||
(getter as any)[SIGNAL] = node;
|
||||
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
||||
const debugName = node.debugName ? ' (' + node.debugName + ')' : '';
|
||||
getter.toString = () => `[Signal${debugName}: ${node.value}]`;
|
||||
}
|
||||
|
||||
runPostProducerCreatedFn(node);
|
||||
|
||||
return getter;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue