MCPcopy
hub / github.com/angular/angular / createComputed

Function createComputed

packages/core/primitives/signals/src/computed.ts:59–93  ·  view source on GitHub ↗
(
  computation: () => T,
  equal?: ValueEqualityFn<T>,
)

Source from the content-addressed store, hash-verified

57 * Create a computed signal which derives a reactive value from an expression.
58 */
59export function createComputed<T>(
60 computation: () => T,
61 equal?: ValueEqualityFn<T>,
62): ComputedGetter<T> {
63 const node: ComputedNode<T> = Object.create(COMPUTED_NODE);
64 node.computation = computation;
65
66 if (equal !== undefined) {
67 node.equal = equal;
68 }
69
70 const computed = () => {
71 // Check if the value needs updating before returning it.
72 producerUpdateValueVersion(node);
73
74 // Record that someone looked at this signal.
75 producerAccessed(node);
76
77 if (node.value === ERRORED) {
78 throw node.error;
79 }
80
81 return node.value;
82 };
83
84 (computed as ComputedGetter<T>)[SIGNAL] = node;
85 if (typeof ngDevMode !== 'undefined' && ngDevMode) {
86 computed.toString = () =>
87 `[Computed${node.debugName ? ' (' + node.debugName + ')' : ''}: ${String(node.value)}]`;
88 }
89
90 runPostProducerCreatedFn(node);
91
92 return computed as unknown as ComputedGetter<T>;
93}
94
95/**
96 * A dedicated symbol used before a computed value has been calculated for the first time.

Callers 2

computedFunction · 0.90
createQuerySignalFnFunction · 0.90

Calls 2

runPostProducerCreatedFnFunction · 0.90
createMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…