Skip to main content

computed()

Creates a computed signal.

Example

const name = atom('name', 'John')
const greeting = computed('greeting', () => `Hello ${name.value}!`)
console.log(greeting.value) // 'Hello John!'

computed may also be used as a decorator for creating computed class properties.

Example

class Counter {
max = 100
count = atom<number>(0)

@computed get remaining() {
return this.max - this.count.value
}
}

You may optionally pass in a ComputedOptions when used as a decorator:

Example

class Counter {
max = 100
count = atom<number>(0)

@computed({isEqual: (a, b) => a === b})
get remaining() {
return this.max - this.count.value
}
}

Signature

computed<Value, Diff>(name: string, compute: Function, options?: ComputedOptions<Value, Diff>): Computed<Value, Diff>;

Type parameters

  • Value
  • Diff = unknown

Parameters

NameTypeDescription
namestringThe name of the signal.
compute(previousValue: typeof UNINITIALIZED | Value, lastComputedEpoch: number) => Value | WithDiff<Value, Diff>The function that computes the value of the signal.
options?ComputedOptions<Value, Diff>Options for the signal.

Returns

Computed<Value, Diff>

Defined in: signia/src/Computed.ts:342

Signature

computed(target: any, key: string, descriptor: PropertyDescriptor): PropertyDescriptor;

Parameters

NameType
targetany
keystring
descriptorPropertyDescriptor

Returns

PropertyDescriptor

Defined in: signia/src/Computed.ts:352

Signature

computed<Value, Diff>(options?: ComputedOptions<Value, Diff>): Function;

Type parameters

  • Value
  • Diff = unknown

Parameters

NameType
options?ComputedOptions<Value, Diff>

Returns

Function

Signature

(target: any, key: string, descriptor: PropertyDescriptor): PropertyDescriptor;

Parameters

NameType
targetany
keystring
descriptorPropertyDescriptor

Returns

PropertyDescriptor

Defined in: signia/src/Computed.ts:358