Skip to content

API Reference / @gtkx/runtime / withSignals

Function: withSignals() ​

withSignals<T, TSignals>(base, signals): SignalBaseClass<InstanceType<T>, ConstructorParameters<T>, TSignals, T extends new (...args) => unknown ? false : true>

Defined in: packages/runtime/src/register-class.ts:490

Returns an unregistered subclass of base that declares signals, so a class extending it can emit, connect and listen to them on this inside its own body. registerClass installs these signals together with its signals option when it registers that class; a name declared in both is an error.

Type Parameters ​

T ​

T extends AnyClass

TSignals ​

TSignals extends Record<string, SignalSpec>

Parameters ​

base ​

T

The generated or registered class to extend.

signals ​

TSignals

Signal specs keyed by name, as in the signals option of registerClass.

Returns ​

SignalBaseClass<InstanceType<T>, ConstructorParameters<T>, TSignals, T extends new (...args) => unknown ? false : true>

A base class whose instances carry the declared signals in their type.

Example ​

ts
class Counter extends withSignals(GObject.Object, { "cycle-completed": { paramTypes: [GObject.TYPE_INT] } }) {
    tick(cycles: number): void {
        this.emit("cycle-completed", cycles);
    }
}

const RegisteredCounter = registerClass(Counter, { typeName: "ExampleCounter" });