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:338

Signature​

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

Parameters​

NameType
targetany
keystring
descriptorPropertyDescriptor

Returns​

PropertyDescriptor

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

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:354