This is the identity function with special type annotations.

If you have a variable that is either an Evt that post A or an Evt that post B you have an event that post A or B.

In other words Evt<A> | Evt<B> is assignable to Evt<A | B >. This method implements this property.

import { Evt, VoidEvt, matchVoid } from "evt";

declare evt: Evt<string> | Evt<number> | VoidEvt = Evt.create<any>();

evt.attach(data=> { }); // TS ERROR

Evt.factorize(evt) // OK, return Evt<string | number | void>
    .attach(data=> { // data is string | number | void

        //To test if data is void
        if( matchVoid(data) ){

        //Here data is string | number.


See also FactorizeEvt<E>, helper type that this method levrage.

Last updated