Skip to content

Latest commit

 

History

History
232 lines (144 loc) · 4.65 KB

README.md

File metadata and controls

232 lines (144 loc) · 4.65 KB

@cdellacqua/signals

@cdellacqua/signals

Table of contents

Type Aliases

Functions

Type Aliases

ReadonlySignal

Ƭ ReadonlySignal<T>: Object

A signal that can have subscribers and emit values to them.

Type parameters

Name
T

Type declaration

Name Type
nOfSubscriptions () => number
subscribe (subscriber: Subscriber<T>) => Unsubscribe
subscribeOnce (subscriber: Subscriber<T>) => Unsubscribe

Defined in

index.ts:7


Signal

Ƭ Signal<T>: ReadonlySignal<T> & { emit: (v: T) => void }

A signal that can have subscribers and emit values to them.

Type parameters

Name
T

Defined in

index.ts:30


Subscriber

Ƭ Subscriber<T>: (current: T) => void

Type parameters

Name
T

Type declaration

▸ (current): void

A generic subscriber that takes a value emitted by a signal as its only parameter.

Parameters
Name Type
current T
Returns

void

Defined in

index.ts:2


Unsubscribe

Ƭ Unsubscribe: () => void

Type declaration

▸ (): void

A function that's used to unsubscribe a subscriber from a signal.

Returns

void

Defined in

index.ts:4

Functions

coalesceSignals

coalesceSignals<T>(signals$): ReadonlySignal<T[number]>

Coalesce multiple signals into one that will emit the latest value emitted by any of the source signals.

Example:

const lastUpdate1$ = makeSignal<number>();
const lastUpdate2$ = makeSignal<number>();
const latestUpdate$ = coalesceSignals([lastUpdate1$, lastUpdate2$]);
latestUpdate$.subscribe((v) => console.log(v));
lastUpdate1$.emit(1577923200000); // will log 1577923200000
lastUpdate2$.emit(1653230659450); // will log 1653230659450

Type parameters

Name Type
T extends unknown[]

Parameters

Name Type Description
signals$ { [P in string | number | symbol]: ReadonlySignal<T[P]> } an array of signals to observe.

Returns

ReadonlySignal<T[number]>

a new signal that emits whenever one of the source signals emits.

Defined in

composition.ts:75


deriveSignal

deriveSignal<T, U>(signal$, transform): ReadonlySignal<U>

Create a signal that emits whenever the passed signal emits. The original emitted value gets transformed by the passed function and the result gets emitted.

Example:

const signal$ = makeSignal<number>();
const derived$ = deriveSignal(signal$, (n) => n + 100);
derived$.subscribe((v) => console.log(v));
signal$.emit(3); // will trigger console.log, echoing 103

Type parameters

Name
T
U

Parameters

Name Type Description
signal$ ReadonlySignal<T> a signal.
transform (data: T) => U a transformation function.

Returns

ReadonlySignal<U>

a new signal that will emit the transformed data.

Defined in

composition.ts:19


makeSignal

makeSignal<T>(): Signal<T>

Make a signal of type T.

Example usage:

const signal$ = makeSignal<number>();
signal$.emit(10);

Example usage with no data:

const signal$ = makeSignal<void>();
signal$.emit();

Type parameters

Name
T

Returns

Signal<T>

a signal.

Defined in

index.ts:53